NAV
Python

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 內容。
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" 兩種,文字轉聲音的標記 (包含破音字)。

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.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 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 內容。
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" 兩種,文字轉聲音的標記 (包含破音字)。

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_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 內容。
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 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 內容。
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" 兩種,文字轉聲音的標記 (包含破音字)。

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_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 內容。
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 內容。