KeyMojiAPI
KeyMoji
範例程式:
from KeyMojiAPI import KeyMoji
# 若您是使用 Docker 版本,無須填入 username, username 參數
keymoji = KeyMoji(username="", keymojiKey="")
初始化 KeyMojiAPI。
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
username | str | "" | 您在本站註冊時所使用的帳號 (email)。KeyMoji Docker 版本無需設定此參數。 |
keymojiKey | str | "" | 在本站購買KeyMoji 服務,完成付費後取得的一個具有 31 字符長度的字串。KeyMoji Docker 版本無需設定此參數。 |
url | str | "https://api.droidtown.co" | 若您購買 KeyMoji Docker 版本,請設定自行架設 KeyMoji Docker 的服務網址。 |
sense2
範例程式:
inputSTR = "他逃離了危險的災難"
sense2Result = keymoji.sense2(inputSTR, model="general",
userDefinedDICT={"positive": [], "negative": [], "cursing": []})
回傳結果 (JSON 格式):
{
"status": true,
"msg": "Success!",
"results": [
{
"score": 0.2798,
"sentiment": "positive",
"input_str": "他逃離了危險的災難",
"cursing": false
}
],
"sense": "sense2",
"model": "general",
"version": "v101"
}
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
inputSTR | str | "" | 將要送上 KeyMoji 情緒偵測處理的文字。注意!每次最大長度不得超過 6000 個字符 。 |
contextSenitivity | bool | True | 語境敏感開關,預設為 True。此參數為 True 時,前句的句子若有分數,若此句計算的結果無分數,則前句的分數會延續影響此句分數,直到下一句計算的結果有分數。例如:contextSenitivity = True,inputSTR = "好不容易離開思念的軌跡,回憶將我聯繫到過去",結果為:"好不容易離開思念的軌跡" => -0.6043 , "回憶將我聯繫到過去" => -0.4532 ;反之,參數為 False 時,"回憶將我聯繫到過去" => 0 。 |
model | str | "general" | 可為 "general"、"hotel"、"restaurant" 或 "shopping",預設為 "general"。指定不同的計算模型,將情緒偵測結果投射到二維 (SENSE2)、八維 (SENSE8) 的情緒空間。 |
--general: 使用通用模型,依據 句型結構 計算文本的情緒分數。 |
|||
--hotel: 使用旅館評價模型,依據 訓練模型 計算文本的情緒分數。 |
|||
--restaurant: 使用餐廳評價模型,依據 訓練模型 計算文本的情緒分數。 |
|||
--shopping: 使用購物評價模型,依據 訓練模型 計算文本的情緒分數。 |
|||
context_sensitivity | bool | True | 語境敏感開關,預設為 True。此參數為 True 時,前句的句子若有分數,若此句計算的結果無分數,則前句的分數會延續影響此句分數,直到下一句計算的結果有分數。例如:context_sensitivity = True,input_str = "好不容易離開思念的軌跡,回憶將我聯繫到過去",結果為:"好不容易離開思念的軌跡" => -0.6043 , "回憶將我聯繫到過去" => -0.4532 ;反之,參數為 False 時,"回憶將我聯繫到過去" => 0 。將 model 指定為 "general" 時才有此功能 。 |
user_defined | dict | {} | 使用者自訂的正向 "positive" 、負向 "negative" 與 "cursing" 字典,若使用此功能,會優先計算其字典內的詞彙分數。例如:{"positive": ["邪惡", "地獄"], "negative": ["正義", "天堂"]} 。若 positive 與 negative 有相同詞彙,則會相互抵銷其分數 。 |
回傳內容說明
回傳訊息 | 型態 | 說明 |
---|---|---|
status | bool | 若成功執行並收到情緒偵測結果,回傳 True;失敗,則回傳 False。 |
msg | str | 可能為以下的文字: |
- Success!: 順利完成情緒偵測作業。 | ||
- Invalid arguments.: 上傳參數錯誤,請重新檢查上傳時的參數是否符合規則名稱。 | ||
- Invalid content_type.: 上傳格式必須為 Json 格式 (application/json)。 | ||
- Your input_str is too long (over 6000 characters.): input_str 超過 6000 字符。 | ||
- Authentication Failed.: 無法驗証您的帳號,或是未購買KeyMoji方案。請再檢查一次您使用的帳號是否正確。 | ||
- Invalid KeyMoji_Key.: 無效的 keymoji_key。請再檢查一次您的 keymoji_key 是否正確。 | ||
- Invalid sense.: sense 所指定的參數不存在。 | ||
- request['context_sensitivity'] only takes True/False.: context_sensitivity 只能是 boolean 格式。 | ||
- request['sense'] should be set as 'tension', 'sense2' or 'sense8', other settings don't make any sense to KeyMoji.: sense 需要指定其參數為 'tension', 'sense2' 或 'sense8' 字串。 | ||
- request['model'] must be one of the models listed: 'general', 'hotel', 'shopping' or 'restaurant'.: model 需要指定其參數為 'general', 'hotel', 'shopping' 或 'restaurant' 字串。 | ||
- request['user_defined'] Parsing ERROR. (Please check your the format and encoding.): user_defined 必須是 DICT 格式,例如: {"positive": ["邪惡", "地獄"], "negative": ["正義", "天堂"]} 。 | ||
- Internal Server Error. (System will reboot in 5min, please try again later.): 嗯…似乎我們的伺服器出了點狀況。我們正在努力修復中,5 分鐘內會自動重啟,請稍後再試一次。 | ||
sense | str | 此次情緒偵測所使用的功能。此範例為 sense2。 |
model | str | 此次情緒偵測所使用的模型。此範例為 general。 |
results | list | 以句子為一個單位,將計算結果存儲至 dict,內容包含以下 |
- inputSTR: 單句的文字字串。 | ||
- cursing: input_str 是否含有國罵的文字內容,例:XX娘。 |
||
- score: 計算 input_str 的情緒分數。若 context_sensitivity == True 時,會受到前句的結果影響,不同於單句計算的分數。 |
||
- sentiment: 依據語意計算結果判斷 input_str 的表述,屬於在人類情緒光譜上哪個分佈位置: |
||
--positive: 正向表述 (0.2, 1] |
||
--negative: 負向表述 [-1, -0.2) |
||
--neutral: 中性表述 [-0.2, -0.2] |
sense8
情緒又稱「情感」,是動物出於本能與生俱來的多種感覺、思想和行為綜合產生的心理和生理狀態,並與我們生活息息相關。有些複雜情緒必須經過與他人互動才能學習到,因此每個人所擁有的情緒數量和對情緒的定義都不一樣。
KeyMoji 依據美國心理學家 Robert Plutchik 提出八種
主要的成對兩極核心情緒,分別為 Anger、Anticipation、Disgust、Fear、Joy、Sadness、Surprise、Trust 來做計算。
範例程式:
inputSTR = "他逃離了危險的災難"
sense8Result = keymoji.sense8(inputSTR, model="general",
userDefinedDICT={"positive": [], "negative": [], "cursing": []})
回傳結果 (JSON 格式):
{
"status": true,
"msg": "Success!",
"results": [
{
"input_str": "他逃離了危險的災難",
"Joy": 3.7486,
"Trust": 5.1776,
"Surprise": 6.7238,
"Anticipation": 0.9618,
"Fear": 0.9505,
"Sadness": 0.9108,
"Anger": 0.9516,
"Disgust": 0.8876
}
],
"sense": "sense8",
"model": "general",
"version": "v101"
}
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
inputSTR | str | "" | 將要送上 KeyMoji 情緒偵測處理的文字。注意!每次最大長度不得超過 6000 個字符 。 |
model | str | "general" | 可為 "general"、"hotel"、"restaurant" 或 "shopping",預設為 "general"。指定不同的計算模型,將情緒偵測結果投射到二維 (SENSE2)、八維 (SENSE8) 的情緒空間。 |
--general: 使用通用模型,依據 句型結構 計算文本的情緒分數。 |
|||
--hotel: 使用旅館評價模型,依據 訓練模型 計算文本的情緒分數。 |
|||
--restaurant: 使用餐廳評價模型,依據 訓練模型 計算文本的情緒分數。 |
|||
--shopping: 使用購物評價模型,依據 訓練模型 計算文本的情緒分數。 |
|||
user_defined | dict | {} | 使用者自訂的正向 "positive" 、負向 "negative" 與 "cursing" 字典,若使用此功能,會優先計算其字典內的詞彙分數。例如:{"positive": ["邪惡", "地獄"], "negative": ["正義", "天堂"]} 。 |
PS.關於SENSE8八個維度參考的來源。
回傳內容說明
回傳訊息 | 型態 | 說明 |
---|---|---|
status | bool | 若成功執行並收到情緒偵測結果,回傳 True;失敗,則回傳 False。 |
msg | str | 可能為以下的文字: |
- Success!: 順利完成情緒偵測作業。 | ||
- Invalid arguments.: 上傳參數錯誤,請重新檢查上傳時的參數是否符合規則名稱。 | ||
- Invalid content_type.: 上傳格式必須為 Json 格式 (application/json)。 | ||
- Your input_str is too long (over 6000 characters.): input_str 超過 6000 字符。 | ||
- Authentication Failed.: 無法驗証您的帳號,或是未購買KeyMoji方案。請再檢查一次您使用的帳號是否正確。 | ||
- Invalid KeyMoji_Key.: 無效的 keymoji_key。請再檢查一次您的 keymoji_key 是否正確。 | ||
- Invalid sense.: sense 所指定的參數不存在。 | ||
- request['context_sensitivity'] only takes True/False.: context_sensitivity 只能是 boolean 格式。 | ||
- request['sense'] should be set as 'tension', 'sense2' or 'sense8', other settings don't make any sense to KeyMoji.: sense 需要指定其參數為 'tension', 'sense2' 或 'sense8' 字串。 | ||
- request['model'] must be one of the models listed: 'general', 'hotel', 'shopping' or 'restaurant'.: model 需要指定其參數為 'general', 'hotel', 'shopping' 或 'restaurant' 字串。 | ||
- request['user_defined'] Parsing ERROR. (Please check your the format and encoding.): user_defined 必須是 DICT 格式,例如: {"positive": ["邪惡", "地獄"], "negative": ["正義", "天堂"]} 。 | ||
- Internal Server Error. (System will reboot in 5min, please try again later.): 嗯…似乎我們的伺服器出了點狀況。我們正在努力修復中,5 分鐘內會自動重啟,請稍後再試一次。 | ||
sense | str | 此次情緒偵測所使用的功能。此範例為 sense8。 |
model | str | 此次情緒偵測所使用的模型。此範例為 general。 |
results | list | 以句子為一個單位,將計算結果存儲至 dict,內容包含四種 正/負向情緒,共八種情緒分數[0, 12.5] |
- inputSTR: 單句的文字字串。 | ||
- Anger: 負向情緒分數,在 inputSTR 裡存在「憤怒」語意意涵的指數。 | ||
- Disgust: 負向情緒分數,在 inputSTR 裡存在「噁心」語意意涵的指數。 | ||
- Fear: 負向情緒分數,在 inputSTR 裡存在「恐懼」語意意涵的指數。 | ||
- Sadness: 負向情緒分數,在 inputSTR 裡存在「悲傷」語意意涵的指數。 | ||
- Joy: 正向情緒分數,在 inputSTR 裡存在「歡樂」語意意涵的指數。 | ||
- Anticipation: 正向情緒分數,在 inputSTR 裡存在「期待」語意意涵的指數。 | ||
- Surprise: 正向情緒分數,在 inputSTR 裡存在「驚喜」語意意涵的指數。 | ||
- Trust: 正向情緒分數,在 inputSTR 裡存在「信任」語意意涵的指數。 |
PS.八維度核心情緒分類請參考下表:
tension
範例程式:
inputSTR = """我想向各位更新我們的努力成果,曝光在那荒謬、漫長的11月3日選舉中所發生的大面積選舉舞弊和各種不正常的現象。
我們以前有所謂的「選舉日」,現在卻拖延成好幾個選舉週、選舉月,這段時間裡許多不好的事發生了,特別是我們得去證明那些原本我們不需要去驗證的事,才得以執行我們最偉大的特權——選舉權。
作為總統,我責無旁貸,保護這個國家的法律和憲法,所以我決心保障我們的選舉系統。
而這個系統正遭受合謀攻擊。在總統選舉前的幾個月,我們被多次警告,不要過早宣告我們的勝選;我們反覆被告知,這場選舉將耗時幾週甚至幾個月來分出勝、來數缺席者選票,並確認結果。
我的對手被告知:「可以與選舉保持距離,不需要競選活動。我們不需要你。我們搞定了,這場選舉已經結束。」
實際上,他們的表現得好像他們早已知道了這場選舉的結果。一切都在他們的掌控之中。很可能是這樣,這對我們的國家來說是非常悲哀的。
這一切(發生的事情)都非常奇怪。在選舉後的幾天,我們見證了這場試圖決定勝者的操作。即使許多關鍵州仍然在計算選票。
我們必須繼續依循憲法流程,為維護選舉的誠信,我們將確保計算每張合法選票,不計算任何一張非法選票。這不只是為了尊重那7,400萬選我的美國人,也是為了確保美國人能對這場選舉、以致未來的選舉還能保有信心。
今天我將詳細說明我們近幾週所揭露的那些驚人、不符合常規的濫權舞弊行為,呈現給各位我們所發現的證據中的一小部分。事實上我們有大量的證據。
我想先和各位解釋腐敗的郵寄選票系統。
民主黨是如何系統性地策劃,特別使搖擺州的選票得以被修改。因為他們必須在(那幾個州)獲得勝選。他們不知道的是,事情比他們預期的要困難許多,因為我們在所有搖擺州都遙遙領先,比他們認為的多太多了。
我們老早就知道,民主黨的政治機器是如何參與選舉舞弊。從底特律到費城,從密爾沃基市到亞特蘭大,太多地方。
今年所不同的是,民主黨積極推動印刷並寄出數十、數百萬張郵寄選票。寄到不知名的收件人手裡,沒有任何保護措施。這讓舞弊和濫權演變到前所未見的程度。
利用疫情作為藉口,民主黨的法官和政客,在投票前幾個月甚至幾週前大肆修改選舉章程。
11月3號的選舉,我們的立法者很少參與其中,但按憲法要求他們是該參與其中。但非常罕見。不過,你會看到隨著我們持續提起訴訟,所發生的一切,這場選舉絕對都是違憲的。
包括內華達和加州等許多州,向選民名單上的每個人郵寄了(總數)超百萬的有效選票,無論這些人是否要求郵寄選票,無論是死是活,他們都收到了選票。
在其它州,如明尼蘇達、密歇根州或威斯康星州,在今年年中就發起了普遍缺席選票,(他們)向所有名單上的選民發送缺席選票申請表。無論這些人的身分為何,如此大量的擴充投票數量使欺詐的閘門大大敞開。
眾所周知的事實是,這些選票中塞滿了沒有合法投票權的人的選票,包括那些死者、搬走的、甚至是在我們國家沒有公民身分的人。更有甚者,這些紀錄充斥著各種錯誤,錯誤地址、重複輸入和其它問題,而這些錯誤都沒有被質疑,從來沒有被質疑過。
在搖擺州的許多縣內,登記選民的人數遠超出合格適齡的選民人數,包括密歇根州的67個縣。所有這些都是證據。
在威斯康辛,該州的選舉委員會無法證實其中超過十萬人的居民身分,卻拒絕將這些人從選民名冊中移除。他們知道為什麼這樣。
我知道,他們是非法選民。荒謬的是,儘管到了2020年,我們竟沒有任何方法來核實那些投票選民的合法性。
而這是一次如此重要的選舉,我們無法確定他們是誰?是否是該州居民?甚或是他們是否是美國公民?
我們無法得知。我們(發現)在所有搖擺州都有重大違規或徹底的欺詐行為。其票數遠遠超過反轉一個州的(選舉)結果所需的票數。
換句話說,以威斯康星州為例。我們在選舉日當晚(得票)遠遠超前,他們最終使我們奇蹟般地輸掉了2萬票。
我可以在這裡向您展示,在威斯康星州,我們領先了許多,然而在凌晨3點42分出現了這樣一個大量的灌票,大多數是拜登,幾乎全是給拜登。直到今天,每個人都在試圖弄清楚它的來源。
但我從大贏變成小輸,就在這凌晨3點42分,就在威斯康星。
這是一件糟糕、糟糕、非常糟糕的事。但是,我們將擁有超出許多倍的、與推翻該州所需的2萬張選票相比的票數。
如果我們對舞弊的了解正確,喬·拜登不能當總統。
我們談的是數十萬的選票。我們談論的數字是前所未見的。
舉個例子,在某個州,我們落後7000票,但後來我們找到2萬、5萬、10萬、20萬的異議或舞弊選票,其中包括那些未經共和黨監票員驗證的選票。因為這些監票員被鎖在門外不被允許查看這些選票。
還有那些11月3日參加現場投票的人,他們都為能投票感到興奮,他們很開心,以身為美國公民為傲。他們在現場表示他們想要投票,然而他們被告知他們不能投票。
「很抱歉」,他們被告知,「很抱歉,你已經投過郵寄選票了。恭喜你,我們已經收到了你們的選票,你們不能投票。」他們不知道該如何是好,他們投訴無門,只好離開現場,說這很奇怪。但是也有許多人強烈地抗議、投訴。
在很多情況下,他們填寫了臨時選票,但他們的選票沒被用上。事實上,這些選票全是投給川普的。換句話說,他們去現場投票,卻被告知已經投過票了,但他們其實尚未投票,他們只好離開,感到非常喪氣。他們失去了對我們選舉系統的信心。"""
tensionResult = keymoji.tension(inputSTR, userDefinedDICT={"positive": [], "negative": [], "cursing": []})
回傳結果 (JSON 格式):
{
"status": true,
"msg": "Success!",
"results": [0.1791, 0.1667, 0.1, 0.1622, 0.1558, 0.1528, 0.1061, 0.2083, 0.1026, 0.1951, 0.24],
"sense": "tension",
}
在文章中修飾用詞「形容詞、副詞 MODIFIER
」、「成語、諺語 IDIOM
」 與「程度中心語 DegreeHead
(e.g., 很、非常)」能提高整個句子的情緒張力 Tension
。
KeyMoji 利用 Articut 斷詞後的 POS,取出每 180
個字符裡修飾用詞數除以句子的詞彙數 WordCount
。試圖呈現文章中「平滑化後,每 180
個字符所呈現的情緒張力」係數。
情緒張力公式
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
inputSTR | str | "" | 將要送上 KeyMoji 情緒偵測處理的文字,至少 180 個字符。注意!每次最大長度不得超過 6000 個字符 。 |
user_defined | dict | {} | 使用者自訂的正向 "positive" 、負向 "negative" 與 "cursing" 字典,若使用此功能,會優先計算其字典內的詞彙分數。例如:{"positive": ["邪惡", "地獄"], "negative": ["正義", "天堂"]} 。 |
回傳內容說明
回傳訊息 | 型態 | 說明 |
---|---|---|
status | bool | 若成功執行並收到情緒偵測結果,回傳 True;失敗,則回傳 False。 |
msg | str | 可能為以下的文字: |
- Success!: 順利完成情緒偵測作業。 | ||
- Invalid arguments.: 上傳參數錯誤,請重新檢查上傳時的參數是否符合規則名稱。 | ||
- Invalid content_type.: 上傳格式必須為 Json 格式 (application/json)。 | ||
- Your input_str is too long (over 6000 characters.): input_str 超過 6000 字符。 | ||
- Authentication Failed.: 無法驗証您的帳號,或是未購買KeyMoji方案。請再檢查一次您使用的帳號是否正確。 | ||
- Invalid KeyMoji_Key.: 無效的 keymoji_key。請再檢查一次您的 keymoji_key 是否正確。 | ||
- Invalid sense.: sense 所指定的參數不存在。 | ||
- request['sense'] should be set as 'tension', 'sense2' or 'sense8', other settings don't make any sense to KeyMoji.: sense 需要指定其參數為 'tension', 'sense2' 或 'sense8' 字串。 | ||
- request['user_defined'] Parsing ERROR. (Please check your the format and encoding.): user_defined 必須是 DICT 格式,例如: {"positive": ["邪惡", "地獄"], "negative": ["正義", "天堂"]} 。 | ||
- Internal Server Error. (System will reboot in 5min, please try again later.): 嗯…似乎我們的伺服器出了點狀況。我們正在努力修復中,5 分鐘內會自動重啟,請稍後再試一次。 | ||
sense | str | 此次情緒偵測所使用的功能。此範例為 Tension。 |
results | list | 以 180 個字符為一個單位,將計算結果存儲至 list,分數區間為 [0, 1]。 |
keymoji2visual
範例程式:
# sense2Result / sense8Result / tensionResult
result = keymoji.keymoji2visual(sense2Result)
回傳結果 (JSON 格式):
{
"status": true,
"msg": "sense2/sense2.png saved."
}
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
resultDICT | list | [] | 填入 sense2, sense8, tension 分析的結果。 |
path | str | "" | 指定圖片的目錄位置。 |
filename | str | "" | 指定儲存的圖片名稱。 |
回傳內容說明
回傳訊息 | 型態 | 說明 |
---|---|---|
status | bool | 若成功執行並收到情緒偵測結果,回傳 True;失敗,則回傳 False。 |
msg | str | 可能為以下的文字: |
- {path}/{filename}.png saved.: 圖片順利儲存。 | ||
- Invalid arguments.: 上傳參數錯誤,請重新檢查上傳時的參數是否符合規則名稱。 | ||
- Invalid content_type.: 上傳格式必須為 Json 格式 (application/json)。 | ||
- Your input_str is too long (over 6000 characters.): input_str 超過 6000 字符。 | ||
- Authentication Failed.: 無法驗証您的帳號,或是未購買KeyMoji 方案。請再檢查一次您使用的帳號是否正確。 |
||
- Invalid KeyMoji_Key.: 無效的 keymoji_key。請再檢查一次您的 keymoji_key 是否正確。 | ||
- Invalid result.: results內容不符合指定參數sense。 | ||
- Invalid sense.: sense 所指定的參數不存在。 | ||
model | str | 此次情緒偵測所使用的模型。 |