ArticutAPI
Articut
範例:
from ArticutAPI import Articut
articut = Articut()
初始化 ArticutAPI 。
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
username | str | "" | 你註冊時的 email。若留空,則會使用每小時更新 2000 字的公用帳號。 |
apikey | str | "" | 您完成付費後取得的 apikey 值。若留空,則會使用每小時更新 2000 字的公用帳號。 |
version | str | "latest" | 指定版本是選用的。如果此項留白,或指定 "latest",則 Articut 將使用最新版本的演算法對您上傳的文字進行斷詞。此外,您也能指定 Articut 的演算法版本。例如,若在此項輸入字串 "v001",則將會使用 v001 版本的斷詞演算法對您上傳的文字進行斷詞。 |
level | str | "lv2" | 可為 "lv1"、"lv2" 或 "lv3"。指定為 lv1 時,將直接透過句子本身的語法結構進行推算,可視為「沒有百科知識」,只有語法能力的斷詞結果。若指定為 lv2 時,則會額外引入卓騰的百科知識庫輔助運算。若指定為 lv3 時,能夠計算出人、事、時、地、物、數字及拼音。 |
url | str | "https://api.droidtown.co" | 預設為 Droidtown 伺服器,可修改成自行架設 Articut Docker 的服務網址。 |
parse
取得 Articut 斷詞與詞性標記結果。
範例:
inputSTR = "你計劃過地球人類補完計劃"
result = articut.parse(inputSTR, level="lv2", openDataPlaceAccessBOOL=False, wikiDataBOOL=False)
結果:
{"document": "https://api.droidtown.co/document/",
"exec_time": 0.04685401916503906,
"level": "lv2",
"msg": "Success!",
"product": "https://api.droidtown.co/product/",
"result_obj": [[{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "VerbP", "text": "計劃過"},
{"pos": "LOCATION", "text": "地球"},
{"pos": "ENTITY_noun", "text": "人類"},
{"pos": "VerbP", "text": "補完"},
{"pos": "ENTITY_nounHead", "text": "計劃"}]],
"result_pos": ["<ENTITY_pronoun>你</ENTITY_pronoun><VerbP>計劃過</VerbP><LOCATION>地球</LOCATION><ENTITY_noun>人類</ENTITY_noun><VerbP>補完</VerbP><ENTITY_nounHead>計劃</ENTITY_nounHead>"],
"result_segmentation": "你/計劃過/地球/人類/補完/計劃",
"status": true,
"version": "v225",
"word_count_balance": 1869}
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
input_str | str | "" | 將要送上 Articut 進行斷詞暨詞性標記處理的文字。 |
level | str | "" | 可為 "lv1"、"lv2" 或 "lv3"。指定為 lv1 時,將直接透過句子本身的語法結構進行推算,可視為「沒有百科知識」,只有語法能力的斷詞結果。若指定為 lv2 時,則會額外引入卓騰的百科知識庫輔助運算。若指定為 lv3 時,能夠計算出人、事、時、地、物、數字及拼音。 |
userDefinedDictFILE | str | "" | 使用者自定詞典的檔案路徑,必須是 dictionary 格式。 (e.g. userDefinedDictFILE = {"key": ["value1", "value2",...],...})。 |
openDataPlaceAccessBOOL | bool | False | 政府開放平台 OpenData 中存有「交通部觀光局蒐集各政府機關所發佈空間化觀光資訊」。Articut 可取用其中的資訊,並標記為 <KNOWLEGED_place> 。 |
wikiDataBOOL | bool | False | 取自 Wikidata 資料的中文名稱 (Label),並標記為<KNOWLEGED_wikiData> 。Wikidata 不包含以下類型: |
- 單一文字 (不含週期表元素) | |||
- 電影、戲劇、節目名稱 (含系列) | |||
- 電玩遊戲名稱 (含系列) | |||
- 漫畫、動畫名稱 | |||
- 小說、書本名稱 | |||
- 專輯、歌曲名稱 | |||
- 藝術作品名稱 | |||
- 提名或入圍獎項 | |||
- 動詞、時間 | |||
- Wikimedia、Wikidata 列表 | |||
indexWithPOS | bool | False | 返回的 index 位置中是否包含 POS 內容。 |
chemicalBOOL | bool | True | Articut 能夠辨識出化學成分,並標記爲<KNOWLEDGE_chemical> 。如果文本中沒有化學物質,可關閉功能加快執行速度。 |
emojiBOOL | bool | True | Articut 能夠偵測出 Emoji 符號,並標記爲<ENTITY_oov> 。如果文本中沒有 Emoji 符號,可關閉功能加快執行速度。 |
timeRef | str | "" | "lv3" 功能,時間格式:"yyyy-mm-dd HH:MM:SS" ,將 input_str 的句子內的時間依據此參數時間為基準,計算句子裡的相對時間或絕對時間並回傳 datetime 格式。例如: input_str = "蔡英文總統在今年五月二十日就職",time_ref = "2016-01-01 00:00:00",結果為 datetime = "2016-05-20 00:00:00";若無,則會依據系統時間為基準計算最接近的時間, 假設目前 系統時間 = 2020-10-01,結果為 datetime = "2020-05-20 00:00:00"。 |
pinyin | str | "BOPOMOFO" | "lv3" 提供 "BOPOMOFO" 與 "HANYU" 兩種,文字轉聲音的標記 (包含破音字)。 |
autoBreakBOOL | bool | True | 自動切分過長的文句,增加系統穩定性。 |
versions
列出目前可使用的 Articut 版本。通常版本號愈大,完成度愈高。
範例:
versions = articut.versions()
結果:
{"document": "https://api.droidtown.co/document/",
"msg": "Success!",
"product": "https://api.droidtown.co/product/",
"status": true,
"versions": [{"level": ["lv1", "lv2", "lv3"],
"release_date": "2020-11-17",
"version": "latest"},
{"level": ["lv1", "lv2", "lv3"],
"release_date": "2020-11-17",
"version": "v225"},
{"level": ["lv1", "lv2", "lv3"],
"release_date": "2020-11-11",
"version": "v224"},
{"level": ["lv1", "lv2", "lv3"],
"release_date": "2020-10-19",
"version": "v223"},
{"level": ["lv1", "lv2", "lv3"],
"release_date": "2020-10-12",
"version": "v222"},
{"level": ["lv1", "lv2", "lv3"],
"release_date": "2020-10-05",
"version": "v221"},
{"level": ["lv1", "lv2", "lv3"],
"release_date": "2020-09-29",
"version": "v220"}]}
getAddTWLIST
取出 Articut 斷詞與詞性標記結果中含有 (KNOWLEDGE_addTW) 標記的字串。
範例:
inputSTR = "地址:宜蘭縣宜蘭市縣政北七路六段55巷1號2樓"
result = articut.parse(inputSTR)
addTWLIST = articut.getAddTWLIST(result)
結果:
[[],
[],
[[17, 37, "宜蘭縣宜蘭市縣政北七路六段55巷1號2樓"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getChemicalLIST
取出 Articut 斷詞與詞性標記結果中的化學類詞 (KNOWLEDGE_chemical)。
範例:
inputSTR = "在常溫下可將銀氧化成氧化銀"
result = articut.parse(inputSTR)
contentWordLIST = articut.getChemicalLIST(result)
結果:
[[[127, 128, "銀"],
[224, 227, "氧化銀"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getColorLIST
取出 Articut 斷詞結果中含有顏色標記 (MODIFIER_color) 的字串。
範例:
inputSTR = "我喜歡吃黃色的奇異果"
result = articut.parse(inputSTR)
colorLIST = articut.getColorLIST(result)
結果:
[[[107, 109, "黃色"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getContentWordLIST
取出 Articut 斷詞與詞性標記結果中的實詞 (content word)。
範例:
inputSTR = "蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
result = articut.parse(inputSTR)
contentWordLIST = getContentWordLIST(result)
結果:
[[[47, 49, "總統"],
[99, 100, "到"],
[151, 154, "市政府"],
[182, 183, "找"],
[244, 246, "開會"],
[273, 275, "討論"],
[363, 365, "想法"]],
[],
[[13, 14, "請"]],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getCurrencyLIST
取出 Articut 斷詞與詞性標記結果中的貨幣金額 (KNOWLEDGE_currency) 標記的字串。
範例:
inputSTR = "我想知道300英鎊可以換多少美金"
result = articut.parse(inputSTR)
currencyResult = articut.getCurrencyLIST(result)
結果:
[[[111, 116, "300英鎊"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
greedyBOOL | bool | False | 指定為 True 時,將返回「貨幣名稱 + 數字」 (包含「'」與「,」符號) 格式。 |
getLocationStemLIST
取出 Articut 斷詞與詞性標記結果中的地理位置 (location)。
範例:
inputSTR = "前天我從桃園到台北玩一整天"
result = articut.parse(inputSTR)
locationStemLIST = articut.getLocationStemLIST(result)
結果:
[[[93, 95, "桃園"], [144, 146, "台北"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getNounStemLIST
取出 Articut 斷詞與詞性標記結果中的名詞 (noun)。
範例:
inputSTR = "蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
result = articut.parse(inputSTR)
nounStemLIST = articut.getNounStemLIST(result)
結果:
[[[47, 49, "總統"],
[151, 154, "市政府"],
[363, 365, "想法"]],
[],
[],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getOpenDataPlaceLIST
取出 Articut 斷詞與詞性標記結果中的景點 (KNOWLEDGE_place) 標記的字串。
範例:
inputSTR = "我第一次來鹿港老街"
result = articut.parse(inputSTR, openDataPlaceAccessBOOL=True)
placeLIST = articut.getOpenDataPlaceLIST(result)
結果:
[[[119, 123, "鹿港老街"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getPersonLIST
取出 Articut 斷詞與詞性標記結果中的人名 (Person)。
範例:
inputSTR = "蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
result = articut.parse(inputSTR)
personLIST = articut.getPersonLIST(result, includePronounBOOL=True)
結果:
[[[15, 18, "蔡英文"],
[212, 215, "柯文哲"],
[305, 306, "他"]],
[],
[[44, 45, "你"]],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
includePronounBOOL | bool | True | 指定為 True 時,將連代名詞 (Pronoun) 一併回傳;若指定為 False 時,則只回傳人名。 |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getQuestionLIST
取出 Articut 斷詞與詞性標記結果中含有 (CLAUSE_Q) 標記的句子。
範例:
inputSTR = "你要不要吃餅乾"
result = articut.parse(inputSTR)
questionLIST = articut.getQuestionLIST(result)
結果:
[[["<CLAUSE_AnotAQ>", "你要不要吃餅乾"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getTimeLIST
取出 Articut 斷詞與詞性標記結果中的時間 (time)。
範例:
inputSTR = "2018年7月26日"
result = articut.parse(inputSTR)
timeLIST = articut.getTimeLIST(result)
結果:
[[[11, 17, "2018 年"],
[40, 42, "7月"],
[65, 68, "26日"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getVerbStemLIST
取出 Articut 斷詞與詞性標記結果中的動詞 (verb)。
範例:
inputSTR = "你計劃過地球人類補完計劃"
result = articut.parse(inputSTR)
verbStemLIST = articut.getVerbStemLIST(result)
結果:
[[[41, 43, "計劃"],
[111, 112, "補"]],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
getWikiDataLIST
取出 Articut 斷詞與詞性標記結果中的 WikiData 標記文字。
範例:
inputSTR = "什麼是黏體動物"
result = articut.parse(inputSTR, wikiDataBOOL=True)
wikiDataLIST = articut.getWikiDataLIST(result)
結果:
[[[63, 67, "黏體動物"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
graphQL
使用 GraphQL 查詢 Articut 斷詞與詞性標記結果。
範例:
import json
inputSTR = "什麼是黏體動物"
resultFilePath = "articutResult.json"
result = articut.parse(inputSTR)
with open(resultFilePath, "w", encoding="utf-8") as resultFile:
json.dump(result, resultFile, ensure_ascii=False)
graphQLResult = articut.graphQL.query(
filePath=resultFilePath,
query="""
{
meta {
lang
description
}
doc {
text
tokens {
text
pos_
tag_
isStop
isEntity
isVerb
isTime
isClause
isKnowledge
}
ents {
persons {
text
pos_
tag_
}
nouns {
text
pos_
tag_
}
numbers {
text
pos_
tag_
}
sites {
text
pos_
tag_
}
}
}
}""")
結果:
{"data": {"nlp": {"doc": {"ents": {"nouns": [],
"numbers": [],
"persons": [],
"sites": []},
"text": "什麼是黏體動物",
"tokens": [{"isClause": true,
"isEntity": false,
"isKnowledge": false,
"isStop": false,
"isTime": false,
"isVerb": false,
"pos_": "OTHER",
"tag_": "CLAUSE_WhatQ",
"text": "什麼"},
{"isClause": false,
"isEntity": false,
"isKnowledge": false,
"isStop": false,
"isTime": false,
"isVerb": false,
"pos_": "AUX",
"tag_": "AUX",
"text": "是"},
{"isClause": false,
"isEntity": false,
"isKnowledge": false,
"isStop": false,
"isTime": false,
"isVerb": false,
"pos_": "OTHER",
"tag_": "KNOWLEDGE_wikiData",
"text": "黏體動物"}]},
"meta": {"description": "Articut GraphQL Query Result.",
"lang": "TW"}}}}
NER.getAge
取出 Articut 斷詞結果中標記的 num 再加一個 ENTITY 歲。
範例:
inputSTR = "今年十歲的彼德有一個八歲的弟弟和一個十四歲的姐姐"
result = articut.parse(inputSTR)
ageLIST = articut.NER.getAge(result)
結果:
[[[25, 79, "十歲"],
[207, 261, "八歲"],
[401, 456, "十四歲"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getAngle
取出 Articut 斷詞結果中標記 measurement 裡有「度」。
範例:
inputSTR = "cos45° 和 tan60度哪一個大?"
result = articut.parse(inputSTR)
angleLIST = articut.NER.getAngle(result)
結果:
[[],
[],
[[67, 111, "60度"]],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getArea
取出 Articut 斷詞結果中標記 ENTITY 後有 RANGE_locality,表示前面的 ENTITY 空間的上下左右內外附近。
範例:
inputSTR = "藥局門前擠滿了搶購酒精的民眾,隊伍一路排到大街上"
result = articut.parse(inputSTR)
areaLIST = articut.NER.getArea(result)
結果:
[[],
[],
[[67, 111, "60度"]],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getCapacity
取出 Articut 斷詞結果中標記在 measurement 裡有「公升」或其它容量單位。
範例:
inputSTR = "容量1公升的牛奶紙盒裡只能裝 995.5毫升的水"
result = articut.parse(inputSTR)
capacityLIST = articut.NER.getCapacity(result)
結果:
[[[27, 71, "1公升"]],
[],
[[0, 48, "995.5毫升"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getDate
取出 Articut 斷詞結果中標記 month 再加一個 day。
範例:
inputSTR = "其實早在五月15日開始突破百例之前,這起社區大爆發疫情就已經有一些端倪。"
result = articut.parse(inputSTR)
dateLIST = articut.NER.getDate(result)
結果:
[[[75, 126, "五月15日"]],
[],
[],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getDecimal
取出 Articut 斷詞結果中標記內含小數點的 num。
範例:
inputSTR = "如果你需要買美元美金,在臺灣郵政購買(匯率:28.23)會比較便宜。"
result = articut.parse(inputSTR)
decimalLIST = articut.NER.getDecimal(result)
結果:
[[],
[],
[],
[],
[],
[],
[[0, 30, "28.23"]],
[],
[],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getDuration
取出 Articut 斷詞結果中標記可能為 justtime/day/week/month/season/year/decade,視時間長度而定。
範例:
inputSTR = "上星期我們約好了,這件事情今天下午六點到八點要討論"
result = articut.parse(inputSTR)
durationLIST = articut.NER.getDuration(result)
結果:
[[],
[],
[[116, 194, "六點到八點"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getEmoji
取出 Articut 斷詞結果中標記為 Emoji 的符號。
範例:
inputSTR = "很有風味的香港茶餐廳👍,超級推😊"
result = articut.parse(inputSTR)
emojiLIST = articut.NER.getEmoji(result)
結果:
[[[166, 192, "👍"]],
[],
[[51, 77, "😊"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getFood
取出 Articut 斷詞結果中標記取得文本中的食物名稱,若 withLocation 為 True,則連食物前的地方特色詞一起取得。
範例:
inputSTR = "《小糧倉》菜單販售品項十分多元,雞白湯拉麵、咖哩飯、鐵板漢堡排定食等"
result = articut.parse(inputSTR)
foodLIST = articut.NER.getFood(result)
結果:
[[],
[],
[],
[],
[],
[[0, 98, "雞白湯拉麵"]],
[],
[[0, 28, "咖哩飯"]],
[],
[[0, 29, "鐵板漢堡"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
withLocation | bool | False | 若 withLocation 為 True,則連食物前的地方特色詞一起取得。 |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getFraction
取出 Articut 斷詞結果中標記在 measurement 裡有「分之」。
範例:
inputSTR = "成年的貓一天有三分之二的時間在睡覺,小貓睡覺的時間更高達5/6"
# 注意!因 [數字/數字] 可能代表的意義過於分歧 (e.g., 分數、日期…等) 故 NER.getFraction() 工具不予處理。
# 但可自行藉由前處理將「5/6」取代為「六分之五」來處理。
result = articut.parse(inputSTR)
fractionLIST = articut.NER.getFraction(result)
結果:
[[[134, 179, "三分之二"]],
[],
[],
[],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getFrequency
取出 Articut 斷詞結果中標記在 measurement 裡有「赫茲」這類頻率單位。
範例:
inputSTR = "調頻廣播電台頻道為100至108兆赫,每三年一次重審執照"
# 注意!同義句亦可為「每三年重審一次執照」,但因動詞「重審」夾在「每三年」和「一次」之間,為免影響字串索引值,故此處未加以處理。
result = articut.parse(inputSTR)
frequencyLIST = articut.NER.getFrequency(result)
結果:
[[[203, 249, "108兆赫"]],
[],
[[0, 77, "每三年一次"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getInteger
取出 Articut 斷詞結果中標記在 num 裡,可兼容小數點、計位點和中文/阿拉伯數字夾雜及空格。
範例:
inputSTR = "他們兄弟共三個人,其中兩人是雙胞胎,都是十歲"
# 注意「三個人」的「三」並不是獨立的整數,它是量/分類詞系統「三個」的一部份。
result = articut.parse(inputSTR)
integerLIST = articut.NER.getInteger(result)
結果:
[[],
[],
[[27, 53, "兩"]],
[],
[[38, 64, "十"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getLength
取出 Articut 斷詞結果中標記在 measurement 裡有「公分」這類長度單位。
範例:
inputSTR = "標準中式餐桌多為4.2尺、4.5尺、5尺三種規格最常見;6人餐桌,長x寬約140公分x80公分"
result = articut.parse(inputSTR)
lengthLIST = articut.NER.getLength(result)
結果:
[[[96, 141, "4.2尺"]],
[],
[[0, 45, "4.5尺"]],
[],
[[0, 43, "5尺"]],
[],
[],
[],
[[77, 123, "140公分"], [149, 194, "80公分"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getLocation
取出 Articut 斷詞結果中標記在 LOCATION 裡的即為地點。
範例:
inputSTR = "日本對台灣提供疫苗在政界與民間輿論有共識,但仍有多個技術性問題"
result = articut.parse(inputSTR)
locationLIST = articut.NER.getLocation(result)
結果:
[[[10, 12, "日本"], [59, 61, "台灣"]],
[],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getMeasure
取出 Articut 斷詞結果中標記在 measurement 裡的都是測量值。
範例:
inputSTR = "在10立方公尺的箱子裡裝滿3公分長的鉛筆怎麼秤起來只有594.87公克?"
result = articut.parse(inputSTR)
measureLIST = articut.NER.getMeasure(result)
結果:
[[[26, 73, "10立方公尺"], [191, 235, "3公分"], [433, 482, "594.87公克"]],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getMoney
取出 Articut 斷詞結果中標記在在 currency 裡的都是金額。
範例:
inputSTR = "並自104 年度起分年核編計畫經費,總經費 6,500 萬3 千元"
result = articut.parse(inputSTR)
moneyLIST = articut.NER.getMoney(result)
結果:
[[],
[],
[[48, 60, " 6,500 萬3 千元"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
greedyBOOL | bool | False | 指定為 True 時,將返回「貨幣名稱 + 數字」 (包含「'」與「,」符號) 格式。 |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getOrdinal
取出 Articut 斷詞結果中標記在 DetPhrase 中有「第」。
範例:
inputSTR = "第一名和第二名之間的差距實在是太大了"
result = articut.parse(inputSTR)
ordinalLIST = articut.NER.getOrdinal(result)
結果:
[[[0, 40, "第一名"], [78, 118, "第二名"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getPercent
取出 Articut 斷詞結果中標記在 measurement 中有「百分之」。
範例:
inputSTR = "上述提到的歐美人血栓發生率為千分之一,亞洲人應該更低"
result = articut.parse(inputSTR)
percentLIST = articut.NER.getPercent(result)
結果:
[[[177, 222, "千分之一"]],
[],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getPerson
取出 Articut 斷詞結果中標記在 person 裡的即為人名。
範例:
inputSTR = "陳時中親探視遭砍護理師。蔡英文表示「攻擊醫護一定嚴辦」"
result = articut.parse(inputSTR)
personLIST = articut.NER.getPerson(result)
結果:
[[[15, 18, "陳時中"]],
[],
[[15, 18, "蔡英文"]],
[],
[],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
includePronounBOOL | bool | True | 指定為 True 時,將連代名詞 (Pronoun) 一併回傳;若指定為 False 時,則只回傳人名。 |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getRate
取出 Articut 斷詞結果中標記在 measurement 中有「倍」。
範例:
inputSTR = "雙方比數為40比8,相差五倍"
result = articut.parse(inputSTR)
rateLIST = articut.NER.getRate(result)
結果:
[[[72, 153, "40比8"]],
[],
[[29, 72, "五倍"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getSpeed
取出 Articut 斷詞結果中標記在 measurement 中有速度單位,或是 measurement 後跟著時間。
範例:
inputSTR = "颱風彩雲以每小時20公里速度向北進行,近中心最大風速每秒18公尺,瞬間最大陣風每秒25公尺。"
result = articut.parse(inputSTR)
speedLIST = articut.NER.getSpeed(result)
結果:
[[[55, 159, "每小時20公里"]],
[],
[],
[],
[],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getTemperature
取出 Articut 斷詞結果中標記在 measurement 中有溫度單位。
範例:
inputSTR = "高燒至39℃以上,甚至燒到四十度以上,需立即處理"
result = articut.parse(inputSTR)
temperatureLIST = articut.NER.getTemperature(result)
結果:
[[[55, 99, "39℃"]],
[],
[[52, 96, "四十度"]],
[],
[]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getTime
取出 Articut 斷詞結果中標記在 TIME_ 的分類下有超過年的時間/年/季/月/週/日/短於一日的時間/假日。。
範例:
inputSTR = "上星期我們約好了,這件事情今天下午六點到八點要討論"
result = articut.parse(inputSTR)
timeLIST = articut.NER.getTime(result)
結果:
[[[0, 26, "上星期"]],
[],
[[70, 93, "今天"], [93, 116, "下午"], [116, 149, "六點"], [161, 194, "八點"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getWeight
取出 Articut 斷詞結果中標記在 measurement 中有重量單位。
範例:
inputSTR = "桃園河川魚隻大量死亡舖滿河面,一周清出30噸"
result = articut.parse(inputSTR)
weightLIST = articut.NER.getWeight(result)
結果:
[[],
[],
[[54, 98, "30噸"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
NER.getWWW
取出 Articut 斷詞結果中標記在 KNOWLEDGE_url 中的即為網址。
範例:
inputSTR = "延伸閱讀:日本。愛上近江牛https://freshweekly.tw/?pn=vw&id=8rz2cm81o670"
result = articut.parse(inputSTR)
wwwLIST = articut.NER.getWWW(result)
結果:
[[],
[],
[],
[],
[[109, 154, "https://freshweekly.tw/?pn=vw&id=8rz2cm81o670"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
LawsToolkit.getCrime
取出 Articut 斷詞結果中標記取出「法律」名稱 (e.g., 民法、刑法) 以及罪名。
範例:
inputSTR = "楊進勝犯血液中酒精濃度達百分之零點零五以上而駕駛動力交通工具罪,處有期徒刑參月,如易科罰金,以新臺幣壹仟元折算壹日。被告楊進勝所為,係犯刑法第185 條之3 第1項第1 款之血液中酒精濃度達百分之0.05以上而駕駛動力交通工具罪。"
result = articut.parse(inputSTR)
crimeLIST = articut.LawsToolkit.getCrime(result)
結果:
["刑法", "血液中酒精濃度達百分之零點零五以上而駕駛動力交通工具罪"]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 |
LawsToolkit.getPenalty
取出 Articut 斷詞結果中標記取出判決文中的刑責。
範例:
inputSTR = "楊進勝犯血液中酒精濃度達百分之零點零五以上而駕駛動力交通工具罪,處有期徒刑參月,如易科罰金,以新臺幣壹仟元折算壹日。被告楊進勝所為,係犯刑法第185 條之3 第1項第1 款之血液中酒精濃度達百分之0.05以上而駕駛動力交通工具罪。"
result = articut.parse(inputSTR)
penaltyLIST = articut.LawsToolkit.getPenalty(result)
結果:
["有期徒刑參月"]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 |
LawsToolkit.getLawArticle
取出 Articut 斷詞結果中標記取出法條編號。
範例:
inputSTR = "楊進勝犯血液中酒精濃度達百分之零點零五以上而駕駛動力交通工具罪,處有期徒刑參月,如易科罰金,以新臺幣壹仟元折算壹日。被告楊進勝所為,係犯刑法第185 條之3 第1項第1 款之血液中酒精濃度達百分之0.05以上而駕駛動力交通工具罪。"
result = articut.parse(inputSTR)
lawIndexLIST = articut.LawsToolkit.getLawArticle(result)
結果:
["第185 條之3 第1 項第1 款"]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 |
localRE.getAddressCounty
取出 Articut 斷詞結果中標記取出是哪個「縣」。
範例:
inputSTR = "新竹縣竹北市光明六路10號"
result = articut.parse(inputSTR)
countyResult = articut.localRE.getAddressCounty(result)
結果:
[[[17, 20, "新竹縣"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressCity
取出 Articut 斷詞結果中標記取出是哪個「市」。
範例:
inputSTR = "臺中市西屯區臺灣大道三段99號"
result = articut.parse(inputSTR)
cityResult = articut.localRE.getAddressCity(result)
結果:
[[[17, 20, "臺中市"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressDistrict
取出 Articut 斷詞結果中標記取出是哪個「區」。
範例:
inputSTR = "臺中市西屯區臺灣大道三段99號"
result = articut.parse(inputSTR)
districtResult = articut.localRE.getAddressDistrict(result)
結果:
[[[20, 23, "西屯區"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressTownship
取出 Articut 斷詞結果中標記取出是哪個「鄉」或「里」。
範例:
inputSTR = "臺北市玉泉里南京西路434巷9號2樓"
result = articut.parse(inputSTR)
townshipResult = articut.localRE.getAddressTownship(result)
結果:
[[[20, 23, "玉泉里"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressTown
取出 Articut 斷詞結果中標記取出是哪個「鎮」。
範例:
inputSTR = "彰化縣二林鎮斗苑路二段915號"
result = articut.parse(inputSTR)
townResult = articut.localRE.getAddressTown(result)
結果:
[[[20, 23, "二林鎮"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressVillage
取出 Articut 斷詞結果中標記取出是哪個「村」。
範例:
inputSTR = "屏東縣大平村中山路79號"
result = articut.parse(inputSTR)
villageResult = articut.localRE.getAddressVillage(result)
結果:
[[[20, 23, "大平村"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressNeighborhood
取出 Articut 斷詞結果中標記取出是哪個「鄰」。
範例:
inputSTR = "屏東縣大平村5鄰中山路79號"
result = articut.parse(inputSTR)
neighborhoodResult = articut.localRE.getAddressNeighborhood(result)
結果:
[[[23, 25, "5鄰"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressRoad
取出 Articut 斷詞結果中標記取出是哪條「路」。
範例:
inputSTR = "屏東縣大平村5鄰中山路79號"
result = articut.parse(inputSTR)
roadResult = articut.localRE.getAddressRoad(result)
結果:
[[[25, 28, "中山路"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressSection
取出 Articut 斷詞結果中標記取出是哪一「段」。
範例:
inputSTR = "臺中市西屯區臺灣大道三段99號"
result = articut.parse(inputSTR)
sectionResult = articut.localRE.getAddressSection(result)
結果:
[[[27, 29, "三段"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressAlley
取出 Articut 斷詞結果中標記取出是哪一「巷」或「弄」。
範例:
inputSTR = "新北市永和區信義里中山路一段28巷2號2樓之1"
result = articut.parse(inputSTR)
alleyResult = articut.localRE.getAddressAlley(result)
結果:
[[[31, 34,"28巷"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressNumber
取出 Articut 斷詞結果中標記取出是幾「號」。
範例:
inputSTR = "新北市永和區信義里中山路一段28巷2號2樓之1"
result = articut.parse(inputSTR)
numberResult = articut.localRE.getAddressNumber(result)
結果:
[[[34, 36, "2號"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressFloor
取出 Articut 斷詞結果中標記取出是幾「樓」。
範例:
inputSTR = "新北市永和區信義里中山路一段28巷2號2樓之1"
result = articut.parse(inputSTR)
floorResult = articut.localRE.getAddressFloor(result)
結果:
[[[36, 38, "2樓"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
localRE.getAddressRoom
取出 Articut 斷詞結果中標記取出「室」的編號。
範例:
inputSTR = "新北市永和區信義里中山路一段28巷2號2樓之1"
result = articut.parse(inputSTR)
roomResult = articut.localRE.getAddressRoom(result)
結果:
[[[39, 40, "1"]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultDICT | dict | Articut 斷詞與詞性標記結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
MP_ArticutAPI
MP_ArticutAPI
有部份 Function 與 ArticutAPI 的使用方法相同,若要使用,請參考以下連結。
取得 Articut POS 標記功能,請參考 ArticutAPI
取得 MSRA 標記功能,請參考 MSRA NER
使用 法律檢索工具 的功能,請參考 LawsToolkit
使用 台灣地址擷取工具 的功能,請參考 localRE
MP_Articut
範例:
from ArticutAPI.MP_ArticutAPI import MP_Articut
articut = MP_Articut()
初始化 MP_ArticutAPI 。
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
url | str | "http://127.0.0.1" | 自行架設 Articut Docker 的服務網址。 |
port | str | "8964" | 自行架設 Articut Docker 的服務通訊埠。 |
bulkSize | int | 20 | 指定每個線程一次能送上 Articut 進行斷詞暨詞性標記處理的句子數量。 |
userDefinedDictFILE | dict | 使用者自定詞典,必須是 dictionary 格式。 (e.g. userDefinedDictFILE = {"key": ["value1", "value2",...],...})。 |
parse
取得 Articut 斷詞與詞性標記結果。
範例:
inputSTR = "你計劃過地球人類補完計劃"
result = articut.parse(inputSTR)
結果:
{"exec_time": 0.11843991279602051,
"info": "Articut Docker Pro only for Droidtown. Powered by Droidtown Linguist Tech.",
"level": "lv2",
"msg": "Success!",
"result_obj": [[{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "VerbP", "text": "計劃過"},
{"pos": "LOCATION", "text": "地球"},
{"pos": "ENTITY_noun", "text": "人類"},
{"pos": "VerbP", "text": "補完"},
{"pos": "ENTITY_nounHead", "text": "計劃"}]],
"result_pos": ["<ENTITY_pronoun>你</ENTITY_pronoun><VerbP>計劃過</VerbP><LOCATION>地球</LOCATION><ENTITY_noun>人類</ENTITY_noun><VerbP>補完</VerbP><ENTITY_nounHead>計劃</ENTITY_nounHead>"],
"result_segmentation": ["你/計劃過/地球/人類/補完/計劃"],
"status": true,
"version": "v225"}
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
input_str | str | "" | 將要送上 Articut 進行斷詞暨詞性標記處理的文字。 |
level | str | "lv2" | 可為 "lv1"、"lv2" 或 "lv3"。指定為 lv1 時,將直接透過句子本身的語法結構進行推算,可視為「沒有百科知識」,只有語法能力的斷詞結果。若指定為 lv2 時,則會額外引入卓騰的百科知識庫輔助運算。若指定為 lv3 時,能夠計算出人、事、時、地、物、數字及拼音。 |
userDefinedDictFILE | str | "" | 使用者自定詞典的檔案路徑,必須是 dictionary 格式。 (e.g. userDefinedDictFILE = {"key": ["value1", "value2",...],...})。 |
openDataPlaceBOOL | bool | False | 政府開放平台 OpenData 中存有「交通部觀光局蒐集各政府機關所發佈空間化觀光資訊」。Articut 可取用其中的資訊,並標記為 <KNOWLEGED_place> 。 |
wikiDataBOOL | bool | False | 取自 Wikidata 資料的中文名稱 (Label),並標記為<KNOWLEGED_wikiData> 。Wikidata 不包含以下類型: |
- 單一文字 (不含週期表元素) | |||
- 電影、戲劇、節目名稱 (含系列) | |||
- 電玩遊戲名稱 (含系列) | |||
- 漫畫、動畫名稱 | |||
- 小說、書本名稱 | |||
- 專輯、歌曲名稱 | |||
- 藝術作品名稱 | |||
- 提名或入圍獎項 | |||
- 動詞、時間 | |||
- Wikimedia、Wikidata 列表 | |||
indexWithPOS | bool | False | 返回的 index 位置中是否包含 POS 內容。 |
chemicalBOOL | bool | True | Articut 能夠辨識出化學成分,並標記爲<KNOWLEDGE_chemical> 。如果文本中沒有化學物質,可關閉功能加快執行速度。 |
emojiBOOL | bool | True | Articut 能夠偵測出 Emoji 符號,並標記爲<ENTITY_oov> 。如果文本中沒有 Emoji 符號,可關閉功能加快執行速度。 |
timeRef | str | "" | "lv3" 功能,時間格式:"yyyy-mm-dd HH:MM:SS" ,將 input_str 的句子內的時間依據此參數時間為基準,計算句子裡的相對時間或絕對時間並回傳 datetime 格式。例如: input_str = "蔡英文總統在今年五月二十日就職",time_ref = "2016-01-01 00:00:00",結果為 datetime = "2016-05-20 00:00:00";若無,則會依據系統時間為基準計算最接近的時間, 假設目前 系統時間 = 2020-10-01,結果為 datetime = "2020-05-20 00:00:00"。 |
pinyin | str | "BOPOMOFO" | "lv3" 提供 "BOPOMOFO" 與 "HANYU" 兩種,文字轉聲音的標記 (包含破音字)。 |
autoBreakBOOL | bool | True | 自動切分過長的文句,增加系統穩定性。 |
bulk_parse
一次取得大量句子的 Articut 斷詞與詞性標記結果。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputLIST)
結果:
[{"info": "Articut Docker Pro only for Droidtown. Powered by Droidtown "
"Linguist Tech.",
"level": "lv2",
"msg": "Success!",
"result_list": [{"exec_time": 0.00998067855834961,
"result_obj": [[{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "VerbP", "text": "計劃過"},
{"pos": "LOCATION", "text": "地球"},
{"pos": "ENTITY_noun", "text": "人類"},
{"pos": "VerbP", "text": "補完"},
{"pos": "ENTITY_nounHead", "text": "計劃"}]],
"result_pos": ["<ENTITY_pronoun>你</ENTITY_pronoun><VerbP>計劃過</VerbP><LOCATION>地球</LOCATION><ENTITY_noun>人類</ENTITY_noun><VerbP>補完</VerbP><ENTITY_nounHead>計劃</ENTITY_nounHead>"],
"result_segmentation": ["你/計劃過/地球/人類/補完/計劃"]},
{"exec_time": 0.24787235260009766,
"result_obj": [[{"pos": "ENTITY_person", "text": "蔡英文"},
{"pos": "ENTITY_noun", "text": "總統"},
{"pos": "TIME_day", "text": "明日"},
{"pos": "ACTION_verb", "text": "到"},
{"pos": "LOCATION", "text": "台北"},
{"pos": "ENTITY_nouny", "text": "市政府"},
{"pos": "ACTION_verb", "text": "找"},
{"pos": "ENTITY_person", "text": "柯文哲"},
{"pos": "ACTION_verb", "text": "開會"},
{"pos": "ACTION_verb", "text": "討論"},
{"pos": "ENTITY_pronoun", "text": "他"},
{"pos": "FUNC_inner", "text": "的"},
{"pos": "ENTITY_nouny", "text": "想法"}],
[{"pos": "PUNCTUATION", "text": ","}],
[{"pos": "ACTION_verb", "text": "請"},
{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "ACTION_quantifiedVerb",
"text": "安排一下"}],
[{"pos": "PUNCTUATION", "text": "!"}]],
"result_pos": ["<ENTITY_person>蔡英文</ENTITY_person><ENTITY_noun>總統</ENTITY_noun><TIME_day>明日</TIME_day><ACTION_verb>到</ACTION_verb><LOCATION>台北</LOCATION><ENTITY_nouny>市政府</ENTITY_nouny><ACTION_verb>找</ACTION_verb><ENTITY_person>柯文哲</ENTITY_person><ACTION_verb>開會</ACTION_verb><ACTION_verb>討論</ACTION_verb><ENTITY_pronoun>他</ENTITY_pronoun><FUNC_inner>的</FUNC_inner><ENTITY_nouny>想法</ENTITY_nouny>",
",",
"<ACTION_verb>請</ACTION_verb><ENTITY_pronoun>你</ENTITY_pronoun><ACTION_quantifiedVerb>安排一下</ACTION_quantifiedVerb>",
"!"],
"result_segmentation": ["蔡英文/總統/明日/到/台北/市政府/找/柯文哲/開會/討論/他/的/想法",
",",
"請/你/安排一下",
"!"]}],
"status": true,
"version": "v225"}]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
input_list | list | 將要送上 Articut 進行斷詞暨詞性標記處理的文字。 | |
level | str | "lv2" | 可為 "lv1"、"lv2" 或 "lv3"。指定為 lv1 時,將直接透過句子本身的語法結構進行推算,可視為「沒有百科知識」,只有語法能力的斷詞結果。若指定為 lv2 時,則會額外引入卓騰的百科知識庫輔助運算。若指定為 lv3 時,能夠計算出人、事、時、地、物、數字及拼音。 |
userDefinedDictFILE | str | "" | 使用者自定詞典的檔案路徑,必須是 dictionary 格式。 (e.g. userDefinedDictFILE = {"key": ["value1", "value2",...],...})。 |
openDataPlaceBOOL | bool | False | 政府開放平台 OpenData 中存有「交通部觀光局蒐集各政府機關所發佈空間化觀光資訊」。Articut 可取用其中的資訊,並標記為 <KNOWLEGED_place> 。 |
wikiDataBOOL | bool | False | 取自 Wikidata 資料的中文名稱 (Label),並標記為<KNOWLEGED_wikiData> 。Wikidata 不包含以下類型: |
- 單一文字 (不含週期表元素) | |||
- 電影、戲劇、節目名稱 (含系列) | |||
- 電玩遊戲名稱 (含系列) | |||
- 漫畫、動畫名稱 | |||
- 小說、書本名稱 | |||
- 專輯、歌曲名稱 | |||
- 藝術作品名稱 | |||
- 提名或入圍獎項 | |||
- 動詞、時間 | |||
- Wikimedia、Wikidata 列表 | |||
indexWithPOS | bool | False | 返回的 index 位置中是否包含 POS 內容。 |
chemicalBOOL | bool | True | Articut 能夠辨識出化學成分,並標記爲<KNOWLEDGE_chemical> 。如果文本中沒有化學物質,可關閉功能加快執行速度。 |
emojiBOOL | bool | True | Articut 能夠偵測出 Emoji 符號,並標記爲<ENTITY_oov> 。如果文本中沒有 Emoji 符號,可關閉功能加快執行速度。 |
timeRef | str | "" | "lv3" 功能,時間格式:"yyyy-mm-dd HH:MM:SS" ,將 input_str 的句子內的時間依據此參數時間為基準,計算句子裡的相對時間或絕對時間並回傳 datetime 格式。例如: input_str = "蔡英文總統在今年五月二十日就職",time_ref = "2016-01-01 00:00:00",結果為 datetime = "2016-05-20 00:00:00";若無,則會依據系統時間為基準計算最接近的時間, 假設目前 系統時間 = 2020-10-01,結果為 datetime = "2020-05-20 00:00:00"。 |
pinyin | str | "BOPOMOFO" | "lv3" 提供 "BOPOMOFO" 與 "HANYU" 兩種,文字轉聲音的標記 (包含破音字)。 |
mergeBulkResult
合併 bulk_parse() 的結果。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputLIST)
resultLIST = articut.mergeBulkResult(result)
結果:
[{"exec_time": 0.021231889724731445,
"result_obj": [[{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "VerbP", "text": "計劃過"},
{"pos": "LOCATION", "text": "地球"},
{"pos": "KNOWLEDGE_wikiData", "text": "人類"},
{"pos": "VerbP", "text": "補完"},
{"pos": "ENTITY_nounHead", "text": "計劃"}]],
"result_pos": ["<ENTITY_pronoun>你</ENTITY_pronoun><VerbP>計劃過</VerbP><LOCATION>地球</LOCATION><KNOWLEDGE_wikiData>人類</KNOWLEDGE_wikiData><VerbP>補完</VerbP><ENTITY_nounHead>計劃</ENTITY_nounHead>"],
"result_segmentation": ["你/計劃過/地球/人類/補完/計劃"]},
{"exec_time": 0.07153630256652832,
"result_obj": [[{"pos": "KNOWLEDGE_wikiData", "text": "蔡英文"},
{"pos": "KNOWLEDGE_wikiData", "text": "總統"},
{"pos": "TIME_day", "text": "明日"},
{"pos": "ACTION_verb", "text": "到"},
{"pos": "LOCATION", "text": "台北市"},
{"pos": "KNOWLEDGE_wikiData", "text": "政府"},
{"pos": "ACTION_verb", "text": "找"},
{"pos": "KNOWLEDGE_wikiData", "text": "柯文哲"},
{"pos": "ACTION_verb", "text": "開會"},
{"pos": "ACTION_verb", "text": "討論"},
{"pos": "ENTITY_pronoun", "text": "他"},
{"pos": "FUNC_inner", "text": "的"},
{"pos": "KNOWLEDGE_wikiData", "text": "想法"}],
[{"pos": "PUNCTUATION", "text": ","}],
[{"pos": "ACTION_verb", "text": "請"},
{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "ACTION_quantifiedVerb", "text": "安排一下"}],
[{"pos": "PUNCTUATION", "text": "!"}]],
"result_pos": ["<KNOWLEDGE_wikiData>蔡英文</KNOWLEDGE_wikiData><KNOWLEDGE_wikiData>總統</KNOWLEDGE_wikiData><TIME_day>明日</TIME_day><ACTION_verb>到</ACTION_verb><LOCATION>台北市</LOCATION><KNOWLEDGE_wikiData>政府</KNOWLEDGE_wikiData><ACTION_verb>找</ACTION_verb><KNOWLEDGE_wikiData>柯文哲</KNOWLEDGE_wikiData><ACTION_verb>開會</ACTION_verb><ACTION_verb>討論</ACTION_verb><ENTITY_pronoun>他</ENTITY_pronoun><FUNC_inner>的</FUNC_inner><KNOWLEDGE_wikiData>想法</KNOWLEDGE_wikiData>",
",",
"<ACTION_verb>請</ACTION_verb><ENTITY_pronoun>你</ENTITY_pronoun><ACTION_quantifiedVerb>安排一下</ACTION_quantifiedVerb>",
"!"],
"result_segmentation": ["蔡英文/總統/明日/到/台北市/政府/找/柯文哲/開會/討論/他/的/想法",
",",
"請/你/安排一下",
"!"]}]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
inputLIST | str | Articut bulk_parse() 的結果。 |
version
列出目前使用的 Articut 版本。
範例:
version = articut.version()
結果:
{"info": "Articut Docker Pro only for Droidtown. Powered by Droidtown Linguist "
"Tech.",
"msg": "Success!",
"status": true,
"version": "v225"}
bulk_getAddTWLIST
取出 bulk_parse() 結果中含有 (KNOWLEDGE_addTW) 標記的字串。
範例:
inputLIST = [
"地址:宜蘭縣宜蘭市縣政北七路六段55巷1號2樓",
"我們去台北市信義區信義路五段7號"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
addTWLIST = articut.bulk_getAddTWLIST(resultLIST)
結果:
[[[],
[],
[[17, 37, "宜蘭縣宜蘭市縣政北七路六段55巷1號2樓"]]],
[[[80, 93, "台北市信義區信義路五段7號"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getColorLIST
取出 bulk_parse() 結果中含有顏色標記 (MODIFIER_color) 的字串。。
範例:
inputLIST = [
"我喜歡吃黃色的奇異果",
"我討厭吃綠色的花椰菜"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
colorLIST = articut.bulk_getColorLIST(resultLIST)
結果:
[[[[107, 109, "黃色"]]],
[[[107, 109, "綠色"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getContentWordLIST
取出 bulk_parse() 結果中的實詞 (content word)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
contentWordLIST = articut.bulk_getContentWordLIST(resultLIST)
結果:
[[[[41, 43, "計劃"],
[88, 90, "人類"],
[111, 112, "補"],
[138, 140, "計劃"]]],
[[[47, 49, "總統"],
[99, 100, "到"],
[151, 154, "市政府"],
[182, 183, "找"],
[244, 246, "開會"],
[273, 275, "討論"],
[363, 365, "想法"]],
[],
[[13, 14, "請"]],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getChemicalLIST
取出 bulk_parse() 結果中的化學類詞 (KNOWLEDGE_chemical)。
範例:
inputLIST = [
"在常溫下可將銀氧化成氧化銀",
"氯化鈉是食鹽的主要成份"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
contentWordLIST = articut.bulk_getChemicalLIST(resultLIST)
結果:
[[[[127, 128, "銀"],
[224, 227, "氧化銀"]]],
[[[20, 23, "氯化鈉"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getCurrencyLIST
取出 bulk_parse() 結果中的貨幣金額 (KNOWLEDGE_currency) 標記的字串。
範例:
inputLIST = [
"我想知道300英鎊可以換多少美金",
"1萬美金等於多少台幣呢"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
currencyResult = articut.bulk_getCurrencyLIST(result)
結果:
[[[[111, 116, "300英鎊"]]],
[[[20, 24, "1萬美金"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
greedyBOOL | bool | False | 指定為 True 時,將返回「貨幣名稱 + 數字」 (包含「'」與「,」符號) 格式。 |
bulk_getLocationStemLIST
取出 bulk_parse() 結果中的地理位置 (location)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
locationStemLIST = articut.bulk_getLocationStemLIST(resultLIST)
結果:
[[[[62, 64, "地球"]]],
[[[124, 126, "台北"]],
[],
[],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getNounStemLIST
取出 bulk_parse() 結果中的名詞 (noun)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
nounStemLIST = articut.bulk_getNounStemLIST(resultLIST)
結果:
[[[[88, 90, "人類"],
[138, 140, "計劃"]]],
[[[47, 49, "總統"],
[151, 154, "市政府"],
[363, 365, "想法"]],
[],
[],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getOpenDataPlaceLIST
取出 bulk_parse() 結果中的景點 (KNOWLEDGE_place) 標記的字串。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!",
"我第一次來鹿港老街"
]
result = articut.bulk_parse(inputSTR, openDataPlaceBOOL=True)
resultLIST = articut.mergeBulkResult(result)
placeLIST = articut.bulk_getOpenDataPlaceLIST(resultLIST)
結果:
[[[]],
[[],
[],
[],
[]],
[[[119, 123, "鹿港老街"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getPersonLIST
取出 bulk_parse() 結果中的人名 (Person)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
personLIST = articut.bulk_getPersonLIST(resultLIST)
結果:
[[[[16, 17, "你"]]],
[[[15, 18, "蔡英文"],
[212, 215, "柯文哲"],
[305, 306, "他"]],
[],
[[44, 45, "你"]],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
includePronounBOOL | bool | True | 指定為 True 時,將連代名詞 (Pronoun) 一併回傳;若指定為 False 時,則只回傳人名。 |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getTimeLIST
取出 bulk_parse() 結果中的時間 (time)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
timeLIST = articut.bulk_getTimeLIST(resultLIST)
結果:
[[[]],
[[[73, 75, "明日"]],
[],
[],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getVerbStemLIST
取出 bulk_parse() 結果中的動詞 (verb)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
verbStemLIST = articut.bulk_getVerbStemLIST(resultLIST)
結果:
[[[[41, 43, "計劃"],
[111, 112, "補"]],
[]],
[[[99, 100, "到"],
[182, 183, "找"],
[244, 246, "開會"],
[273, 275, "討論"]],
[],
[[13, 14, "請"]],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getQuestionLIST
取出 bulk_parse() 結果中含有 (CLAUSE_Q) 標記的句子。
範例:
inputLIST = [
"你到底要不要吃",
"明天要去哪裡玩呢"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
questionLIST = articut.bulk_getQuestionLIST(resultLIST)
結果:
[[[["<CLAUSE_AnotAQ>", "你到底要不要吃"]]],
[[["<CLAUSE_WhereQ>", "明天要去哪裡玩呢"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getWikiDataLIST
取出 bulk_parse() 結果中的 WikiData 標記文字。
範例:
inputLIST = [
"什麼是黏體動物",
"陽明山上開滿了海芋"
]
result = articut.bulk_parse(inputSTR, wikiDataBOOL=True)
resultLIST = articut.mergeBulkResult(result)
wikiDataLIST = articut.getWikiDataLIST(result)
結果:
[[[[63, 67, "黏體動物"]]],
[[[96, 98, "海芋"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
WS_ArticutAPI
WS_ArticutAPI
有部份 Function 與 ArticutAPI 的使用方法相同,若要使用,請參考以下連結。
取得 Articut POS 標記功能,請參考 ArticutAPI
取得 MSRA 標記功能,請參考 MSRA NER
使用 法律檢索工具 的功能,請參考 LawsToolkit
使用 台灣地址擷取工具 的功能,請參考 localRE
WS_Articut
範例:
from ArticutAPI.WS_ArticutAPI import WS_Articut
articut = WS_Articut()
初始化 WS_ArticutAPI 。
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
url | str | "ws://127.0.0.1" | 自行架設 Articut Docker 的服務網址。 |
port | str | "8964" | 自行架設 Articut Docker 的服務通訊埠。 |
bulkSize | int | 20 | 指定每個線程一次能送上 Articut 進行斷詞暨詞性標記處理的句子數量。 |
userDefinedDictFILE | dict | 使用者自定詞典,必須是 dictionary 格式。 (e.g. userDefinedDictFILE = {"key": ["value1", "value2",...],...})。 |
parse
取得 Articut 斷詞與詞性標記結果。
範例:
inputSTR = "你計劃過地球人類補完計劃"
result = articut.parse(inputSTR)
結果:
{"exec_time": 0.009813547134399414,
"info": "Articut Docker Pro only for Droidtown. Powered by Droidtown Linguist Tech.",
"level": "lv2",
"msg": "Success!",
"result_obj": [[{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "VerbP", "text": "計劃過"},
{"pos": "LOCATION", "text": "地球"},
{"pos": "ENTITY_noun", "text": "人類"},
{"pos": "VerbP", "text": "補完"},
{"pos": "ENTITY_nounHead", "text": "計劃"}]],
"result_pos": ["<ENTITY_pronoun>你</ENTITY_pronoun><VerbP>計劃過</VerbP><LOCATION>地球</LOCATION><ENTITY_noun>人類</ENTITY_noun><VerbP>補完</VerbP><ENTITY_nounHead>計劃</ENTITY_nounHead>"],
"result_segmentation": ["你/計劃過/地球/人類/補完/計劃"],
"status": true,
"version": "v225"}
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
input_str | str | "" | 將要送上 Articut 進行斷詞暨詞性標記處理的文字。 |
level | str | "lv2" | 可為 "lv1"、"lv2" 或 "lv3"。指定為 lv1 時,將直接透過句子本身的語法結構進行推算,可視為「沒有百科知識」,只有語法能力的斷詞結果。若指定為 lv2 時,則會額外引入卓騰的百科知識庫輔助運算。若指定為 lv3 時,能夠計算出人、事、時、地、物、數字及拼音。 |
userDefinedDictFILE | str | "" | 使用者自定詞典的檔案路徑,必須是 dictionary 格式。 (e.g. userDefinedDictFILE = {"key": ["value1", "value2",...],...})。 |
openDataPlaceBOOL | bool | False | 政府開放平台 OpenData 中存有「交通部觀光局蒐集各政府機關所發佈空間化觀光資訊」。Articut 可取用其中的資訊,並標記為 <KNOWLEGED_place> 。 |
wikiDataBOOL | bool | False | 取自 Wikidata 資料的中文名稱 (Label),並標記為<KNOWLEGED_wikiData> 。Wikidata 不包含以下類型: |
- 單一文字 (不含週期表元素) | |||
- 電影、戲劇、節目名稱 (含系列) | |||
- 電玩遊戲名稱 (含系列) | |||
- 漫畫、動畫名稱 | |||
- 小說、書本名稱 | |||
- 專輯、歌曲名稱 | |||
- 藝術作品名稱 | |||
- 提名或入圍獎項 | |||
- 動詞、時間 | |||
- Wikimedia、Wikidata 列表 | |||
indexWithPOS | bool | False | 返回的 index 位置中是否包含 POS 內容。 |
chemicalBOOL | bool | True | Articut 能夠辨識出化學成分,並標記爲<KNOWLEDGE_chemical> 。如果文本中沒有化學物質,可關閉功能加快執行速度。 |
emojiBOOL | bool | True | Articut 能夠偵測出 Emoji 符號,並標記爲<ENTITY_oov> 。如果文本中沒有 Emoji 符號,可關閉功能加快執行速度。 |
timeRef | str | "" | "lv3" 功能,時間格式:"yyyy-mm-dd HH:MM:SS" ,將 input_str 的句子內的時間依據此參數時間為基準,計算句子裡的相對時間或絕對時間並回傳 datetime 格式。例如: input_str = "蔡英文總統在今年五月二十日就職",time_ref = "2016-01-01 00:00:00",結果為 datetime = "2016-05-20 00:00:00";若無,則會依據系統時間為基準計算最接近的時間, 假設目前 系統時間 = 2020-10-01,結果為 datetime = "2020-05-20 00:00:00"。 |
pinyin | str | "BOPOMOFO" | "lv3" 提供 "BOPOMOFO" 與 "HANYU" 兩種,文字轉聲音的標記 (包含破音字)。 |
autoBreakBOOL | bool | True | 自動切分過長的文句,增加系統穩定性。 |
bulk_parse
一次取得大量句子的 Articut 斷詞與詞性標記結果。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputLIST)
結果:
[{"info": "Articut Docker Pro only for Droidtown. Powered by Droidtown "
"Linguist Tech.",
"level": "lv2",
"msg": "Success!",
"result_list": [{"exec_time": 0.010166168212890625,
"result_obj": [[{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "VerbP", "text": "計劃過"},
{"pos": "LOCATION", "text": "地球"},
{"pos": "ENTITY_noun", "text": "人類"},
{"pos": "VerbP", "text": "補完"},
{"pos": "ENTITY_nounHead", "text": "計劃"}]],
"result_pos": ["<ENTITY_pronoun>你</ENTITY_pronoun><VerbP>計劃過</VerbP><LOCATION>地球</LOCATION><ENTITY_noun>人類</ENTITY_noun><VerbP>補完</VerbP><ENTITY_nounHead>計劃</ENTITY_nounHead>"],
"result_segmentation": ["你/計劃過/地球/人類/補完/計劃"]},
{"exec_time": 0.04291224479675293,
"result_obj": [[{"pos": "ENTITY_person", "text": "蔡英文"},
{"pos": "ENTITY_noun", "text": "總統"},
{"pos": "TIME_day", "text": "明日"},
{"pos": "ACTION_verb", "text": "到"},
{"pos": "LOCATION", "text": "台北"},
{"pos": "ENTITY_nouny", "text": "市政府"},
{"pos": "ACTION_verb", "text": "找"},
{"pos": "ENTITY_person", "text": "柯文哲"},
{"pos": "ACTION_verb", "text": "開會"},
{"pos": "ACTION_verb", "text": "討論"},
{"pos": "ENTITY_pronoun", "text": "他"},
{"pos": "FUNC_inner", "text": "的"},
{"pos": "ENTITY_nouny", "text": "想法"}],
[{"pos": "PUNCTUATION", "text": ","}],
[{"pos": "ACTION_verb", "text": "請"},
{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "ACTION_quantifiedVerb",
"text": "安排一下"}],
[{"pos": "PUNCTUATION", "text": "!"}]],
"result_pos": ["<ENTITY_person>蔡英文</ENTITY_person><ENTITY_noun>總統</ENTITY_noun><TIME_day>明日</TIME_day><ACTION_verb>到</ACTION_verb><LOCATION>台北</LOCATION><ENTITY_nouny>市政府</ENTITY_nouny><ACTION_verb>找</ACTION_verb><ENTITY_person>柯文哲</ENTITY_person><ACTION_verb>開會</ACTION_verb><ACTION_verb>討論</ACTION_verb><ENTITY_pronoun>他</ENTITY_pronoun><FUNC_inner>的</FUNC_inner><ENTITY_nouny>想法</ENTITY_nouny>",
",",
"<ACTION_verb>請</ACTION_verb><ENTITY_pronoun>你</ENTITY_pronoun><ACTION_quantifiedVerb>安排一下</ACTION_quantifiedVerb>",
"!"],
"result_segmentation": ["蔡英文/總統/明日/到/台北/市政府/找/柯文哲/開會/討論/他/的/想法",
",",
"請/你/安排一下",
"!"]}],
"status": true,
"version": "v225"}]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
input_list | list | 將要送上 Articut 進行斷詞暨詞性標記處理的文字。 | |
level | str | "lv2" | 可為 "lv1"、"lv2" 或 "lv3"。指定為 lv1 時,將直接透過句子本身的語法結構進行推算,可視為「沒有百科知識」,只有語法能力的斷詞結果。若指定為 lv2 時,則會額外引入卓騰的百科知識庫輔助運算。若指定為 lv3 時,能夠計算出人、事、時、地、物、數字及拼音。 |
userDefinedDictFILE | str | "" | 使用者自定詞典的檔案路徑,必須是 dictionary 格式。 (e.g. userDefinedDictFILE = {"key": ["value1", "value2",...],...})。 |
openDataPlaceBOOL | bool | False | 政府開放平台 OpenData 中存有「交通部觀光局蒐集各政府機關所發佈空間化觀光資訊」。Articut 可取用其中的資訊,並標記為 <KNOWLEGED_place> 。 |
wikiDataBOOL | bool | False | 取自 Wikidata 資料的中文名稱 (Label),並標記為<KNOWLEGED_wikiData> 。Wikidata 不包含以下類型: |
- 單一文字 (不含週期表元素) | |||
- 電影、戲劇、節目名稱 (含系列) | |||
- 電玩遊戲名稱 (含系列) | |||
- 漫畫、動畫名稱 | |||
- 小說、書本名稱 | |||
- 專輯、歌曲名稱 | |||
- 藝術作品名稱 | |||
- 提名或入圍獎項 | |||
- 動詞、時間 | |||
- Wikimedia、Wikidata 列表 | |||
indexWithPOS | bool | False | 返回的 index 位置中是否包含 POS 內容。 |
chemicalBOOL | bool | True | Articut 能夠辨識出化學成分,並標記爲<KNOWLEDGE_chemical> 。如果文本中沒有化學物質,可關閉功能加快執行速度。 |
emojiBOOL | bool | True | Articut 能夠偵測出 Emoji 符號,並標記爲<ENTITY_oov> 。如果文本中沒有 Emoji 符號,可關閉功能加快執行速度。 |
timeRef | str | "" | "lv3" 功能,時間格式:"yyyy-mm-dd HH:MM:SS" ,將 input_str 的句子內的時間依據此參數時間為基準,計算句子裡的相對時間或絕對時間並回傳 datetime 格式。例如: input_str = "蔡英文總統在今年五月二十日就職",time_ref = "2016-01-01 00:00:00",結果為 datetime = "2016-05-20 00:00:00";若無,則會依據系統時間為基準計算最接近的時間, 假設目前 系統時間 = 2020-10-01,結果為 datetime = "2020-05-20 00:00:00"。 |
pinyin | str | "BOPOMOFO" | "lv3" 提供 "BOPOMOFO" 與 "HANYU" 兩種,文字轉聲音的標記 (包含破音字)。 |
mergeBulkResult
合併 bulk_parse() 的結果。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputLIST)
resultLIST = articut.mergeBulkResult(result)
結果:
[{"exec_time": 0.011087417602539062,
"result_obj": [[{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "VerbP", "text": "計劃過"},
{"pos": "LOCATION", "text": "地球"},
{"pos": "ENTITY_noun", "text": "人類"},
{"pos": "VerbP", "text": "補完"},
{"pos": "ENTITY_nounHead", "text": "計劃"}]],
"result_pos": ["<ENTITY_pronoun>你</ENTITY_pronoun><VerbP>計劃過</VerbP><LOCATION>地球</LOCATION><ENTITY_noun>人類</ENTITY_noun><VerbP>補完</VerbP><ENTITY_nounHead>計劃</ENTITY_nounHead>"],
"result_segmentation": ["你/計劃過/地球/人類/補完/計劃"]},
{"exec_time": 0.0493474006652832,
"result_obj": [[{"pos": "ENTITY_person", "text": "蔡英文"},
{"pos": "ENTITY_noun", "text": "總統"},
{"pos": "TIME_day", "text": "明日"},
{"pos": "ACTION_verb", "text": "到"},
{"pos": "LOCATION", "text": "台北"},
{"pos": "ENTITY_nouny", "text": "市政府"},
{"pos": "ACTION_verb", "text": "找"},
{"pos": "ENTITY_person", "text": "柯文哲"},
{"pos": "ACTION_verb", "text": "開會"},
{"pos": "ACTION_verb", "text": "討論"},
{"pos": "ENTITY_pronoun", "text": "他"},
{"pos": "FUNC_inner", "text": "的"},
{"pos": "ENTITY_nouny", "text": "想法"}],
[{"pos": "PUNCTUATION", "text": ","}],
[{"pos": "ACTION_verb", "text": "請"},
{"pos": "ENTITY_pronoun", "text": "你"},
{"pos": "ACTION_quantifiedVerb", "text": "安排一下"}],
[{"pos": "PUNCTUATION", "text": "!"}]],
"result_pos": ["<ENTITY_person>蔡英文</ENTITY_person><ENTITY_noun>總統</ENTITY_noun><TIME_day>明日</TIME_day><ACTION_verb>到</ACTION_verb><LOCATION>台北</LOCATION><ENTITY_nouny>市政府</ENTITY_nouny><ACTION_verb>找</ACTION_verb><ENTITY_person>柯文哲</ENTITY_person><ACTION_verb>開會</ACTION_verb><ACTION_verb>討論</ACTION_verb><ENTITY_pronoun>他</ENTITY_pronoun><FUNC_inner>的</FUNC_inner><ENTITY_nouny>想法</ENTITY_nouny>",
",",
"<ACTION_verb>請</ACTION_verb><ENTITY_pronoun>你</ENTITY_pronoun><ACTION_quantifiedVerb>安排一下</ACTION_quantifiedVerb>",
"!"],
"result_segmentation": ["蔡英文/總統/明日/到/台北/市政府/找/柯文哲/開會/討論/他/的/想法",
",",
"請/你/安排一下",
"!"]}]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
inputLIST | str | Articut bulk_parse() 的結果。 |
version
列出目前使用的 Articut 版本。
範例:
version = articut.version()
結果:
{"info": "Articut Docker Pro only for Droidtown. Powered by Droidtown Linguist "
"Tech.",
"msg": "Success!",
"status": true,
"version": "v225"}
bulk_getAddTWLIST
取出 bulk_parse() 結果中含有 (KNOWLEDGE_addTW) 標記的字串。
範例:
inputLIST = [
"地址:宜蘭縣宜蘭市縣政北七路六段55巷1號2樓",
"我們去台北市信義區信義路五段7號"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
addTWLIST = articut.bulk_getAddTWLIST(resultLIST)
結果:
[[[],
[],
[[17, 37, "宜蘭縣宜蘭市縣政北七路六段55巷1號2樓"]]],
[[[80, 93, "台北市信義區信義路五段7號"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getColorLIST
取出 bulk_parse() 結果中含有顏色標記 (MODIFIER_color) 的字串。。
範例:
inputLIST = [
"我喜歡吃黃色的奇異果",
"我討厭吃綠色的花椰菜"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
colorLIST = articut.bulk_getColorLIST(resultLIST)
結果:
[[[[107, 109, "黃色"]]],
[[[107, 109, "綠色"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getContentWordLIST
取出 bulk_parse() 結果中的實詞 (content word)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
contentWordLIST = articut.bulk_getContentWordLIST(resultLIST)
結果:
[[[[41, 43, "計劃"],
[88, 90, "人類"],
[111, 112, "補"],
[138, 140, "計劃"]]],
[[[47, 49, "總統"],
[99, 100, "到"],
[151, 154, "市政府"],
[182, 183, "找"],
[244, 246, "開會"],
[273, 275, "討論"],
[363, 365, "想法"]],
[],
[[13, 14, "請"]],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getChemicalLIST
取出 bulk_parse() 結果中的化學類詞 (KNOWLEDGE_chemical)。
範例:
inputLIST = [
"在常溫下可將銀氧化成氧化銀",
"氯化鈉是食鹽的主要成份"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
contentWordLIST = articut.bulk_getChemicalLIST(resultLIST)
結果:
[[[[127, 128, "銀"],
[224, 227, "氧化銀"]]],
[[[20, 23, "氯化鈉"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getCurrencyLIST
取出 bulk_parse() 結果中的貨幣金額 (KNOWLEDGE_currency) 標記的字串。
範例:
inputLIST = [
"我想知道300英鎊可以換多少美金",
"1萬美金等於多少台幣呢"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
currencyResult = articut.bulk_getCurrencyLIST(result)
結果:
[[[[111, 116, "300英鎊"]]],
[[[20, 24, "1萬美金"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
greedyBOOL | bool | False | 指定為 True 時,將返回「貨幣名稱 + 數字」 (包含「'」與「,」符號) 格式。 |
bulk_getLocationStemLIST
取出 bulk_parse() 結果中的地理位置 (location)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
locationStemLIST = articut.bulk_getLocationStemLIST(resultLIST)
結果:
[[[[62, 64, "地球"]]],
[[[124, 126, "台北"]],
[],
[],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getNounStemLIST
取出 bulk_parse() 結果中的名詞 (noun)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
nounStemLIST = articut.bulk_getNounStemLIST(resultLIST)
結果:
[[[[88, 90, "人類"],
[138, 140, "計劃"]]],
[[[47, 49, "總統"],
[151, 154, "市政府"],
[363, 365, "想法"]],
[],
[],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getOpenDataPlaceLIST
取出 bulk_parse() 結果中的景點 (KNOWLEDGE_place) 標記的字串。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!",
"我第一次來鹿港老街"
]
result = articut.bulk_parse(inputSTR, openDataPlaceBOOL=True)
resultLIST = articut.mergeBulkResult(result)
placeLIST = articut.bulk_getOpenDataPlaceLIST(resultLIST)
結果:
[[[]],
[[],
[],
[],
[]],
[[[119, 123, "鹿港老街"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getPersonLIST
取出 bulk_parse() 結果中的人名 (Person)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
personLIST = articut.bulk_getPersonLIST(resultLIST)
結果:
[[[[16, 17, "你"]]],
[[[15, 18, "蔡英文"],
[212, 215, "柯文哲"],
[305, 306, "他"]],
[],
[[44, 45, "你"]],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
includePronounBOOL | bool | True | 指定為 True 時,將連代名詞 (Pronoun) 一併回傳;若指定為 False 時,則只回傳人名。 |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getTimeLIST
取出 bulk_parse() 結果中的時間 (time)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
timeLIST = articut.bulk_getTimeLIST(resultLIST)
結果:
[[[]],
[[[73, 75, "明日"]],
[],
[],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getVerbStemLIST
取出 bulk_parse() 結果中的動詞 (verb)。
範例:
inputLIST = [
"你計劃過地球人類補完計劃",
"蔡英文總統明日到台北市政府找柯文哲開會討論他的想法,請你安排一下!"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
verbStemLIST = articut.bulk_getVerbStemLIST(resultLIST)
結果:
[[[[41, 43, "計劃"],
[111, 112, "補"]],
[]],
[[[99, 100, "到"],
[182, 183, "找"],
[244, 246, "開會"],
[273, 275, "討論"]],
[],
[[13, 14, "請"]],
[]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getQuestionLIST
取出 bulk_parse() 結果中含有 (CLAUSE_Q) 標記的句子。
範例:
inputLIST = [
"你到底要不要吃",
"明天要去哪裡玩呢"
]
result = articut.bulk_parse(inputSTR)
resultLIST = articut.mergeBulkResult(result)
questionLIST = articut.bulk_getQuestionLIST(resultLIST)
結果:
[[[["<CLAUSE_AnotAQ>", "你到底要不要吃"]]],
[[["<CLAUSE_WhereQ>", "明天要去哪裡玩呢"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |
bulk_getWikiDataLIST
取出 bulk_parse() 結果中的 WikiData 標記文字。
範例:
inputLIST = [
"什麼是黏體動物",
"陽明山上開滿了海芋"
]
result = articut.bulk_parse(inputSTR, wikiDataBOOL=True)
resultLIST = articut.mergeBulkResult(result)
wikiDataLIST = articut.getWikiDataLIST(result)
結果:
[[[[63, 67, "黏體動物"]]],
[[[96, 98, "海芋"]]]]
參數說明
參數 | 型態 | 預設 | 功能 |
---|---|---|---|
parseResultLIST | list | mergeBulkResult() 的結果。 | |
indexWithPOS | bool | True | 返回的 index 位置中是否包含 POS 內容。 |