<jupyter_start><jupyter_text>ArticutAPI (文截斷詞） 依語法結構計算，而非統計方法的中文斷詞。 [Articut API Website](https://api.droidtown.co/) [Document](https://api.droidtown.co/document/)<jupyter_code>#載入 ArticutAPI Module
from ArticutAPI import Articut, LawsToolkit
from pprint import pprint
articut = Articut()<jupyter_output><empty_output><jupyter_text>請自行修改 inputSTR 字串內容參數 level :斷詞的深度。數字愈小，切得愈細 (預設: lv2)。  lv1: 極致斷詞，適合 NLU 或機器自動翻譯使用。呈現結果將句子中的每個元素都儘量細分出來。  lv2: 詞組斷詞，適合文本分析、特徵值計算、關鍵字擷取…等應用。呈現結果將以具意義的最小單位呈現。<jupyter_code>inputSTR = "我想過過過兒過過的日子。"
result = articut.parse(inputSTR, level="lv2")

print("## Status:", result["status"], "\n")
print("## Msg:", result["msg"], "\n")
if result["status"]:
    print("## Segmentation:", result["result_segmentation"], "\n")
    print("## POS:", result["result_pos"])<jupyter_output><empty_output><jupyter_text>列出斷詞結果所有詞性標記的內容詞可以依需求找出「名詞」、「動詞」或是「形容詞」…等詞彙語意本身已經完整的詞彙。<jupyter_code>#列出所有的 content word.
contentWordLIST = articut.getContentWordLIST(result)
print("## ContentWord:")
pprint(contentWordLIST)
#列出所有的人名 (不含代名詞).
personLIST = articut.getPersonLIST(result, includePronounBOOL=False)
print("## Person (Without Pronoun):")
pprint(personLIST)

personLIST = articut.getPersonLIST(result, includePronounBOOL=True)
print("\n## Person (With Pronoun):")
pprint(personLIST)
#列出所有的 verb word. (動詞)
verbStemLIST = articut.getVerbStemLIST(result)
print("## Verb:")
pprint(verbStemLIST)
#列出所有的 noun word. (名詞)
nounStemLIST = articut.getNounStemLIST(result)
print("## Noun:")
pprint(nounStemLIST)
#列出所有的 event (事件)
inputSTR = "台北信義區出現哥吉拉！"
result = articut.parse(inputSTR)
eventLIST = articut.getEventLIST(result)
print("## Event:")
pprint(eventLIST)
#列出所有的 time (時間)
inputSTR = "火箭在台灣時間25日下午2時30分順利發射"
result = articut.parse(inputSTR)
timeLIST = articut.getTimeLIST(result)
print("## Time:")
pprint(timeLIST)
#列出所有的 location word. (地方名稱)
inputSTR = "台北信義區百貨商圈附近有許多美食餐廳。"
result = articut.parse(inputSTR)
locationStemLIST = articut.getLocationStemLIST(result)
print("## Location:")
pprint(locationStemLIST)
#列出所有的 CLAUSE 問句
inputSTR = "請問目前 Intel 最貴的 CPU 售價多少?"
result = articut.parse(inputSTR)
questionLIST = articut.getQuestionLIST(result)
print("## Question:")
pprint(questionLIST)
#列出所有的貨幣金額
inputSTR = "Macbook Pro 新機售價 1799.77 美元"
result = articut.parse(inputSTR)
currencyResult = articut.getCurrencyLIST(result)
print("## currencyLIST:")
pprint(currencyResult)<jupyter_output><empty_output><jupyter_text>調用資料觀光資訊資料庫政府開放平台中存有「交通部觀光局蒐集各政府機關所發佈空間化觀光資訊」。  Articut 可取用其中的資訊，並標記為 。<jupyter_code>#允許 Articut 調用字典，列出所有政府開放資料中列為觀光地點名稱的字串。(地點名稱)
inputSTR = "我想去花東國家風景區賞鳥"
result = articut.parse(inputSTR, openDataPlaceAccessBOOL=True)

placeLIST = articut.getOpenDataPlaceLIST(result)
print("## Place:")
pprint(placeLIST)<jupyter_output><empty_output><jupyter_text>調用 WikiData 資料庫Articut 可取用其條目 (Label) 的資訊，並標記為 。<jupyter_code>#允許 Articut 調用 WikiData 字典，列出所有 WikiData 條目名稱的字串。
inputSTR = "我在瓶子里發現兩隻邊緣真亮羽水蚤。"
result = articut.parse(inputSTR, wikiDataBOOL=True)

wikiDataLIST = articut.getWikiDataLIST(result)
print("## WikiData:")
pprint(wikiDataLIST)<jupyter_output><empty_output><jupyter_text>Local RE (台灣地址)-----------------地址，是一串的字符，內含國家、省份、城市或鄉村、街道、門牌號碼、屋邨、大廈等建築物名稱，或者再加樓層數目、房間編號等。  一個有效的地址應該是**獨一無二**的，才能讓郵差等物流從業員派送郵件，或者上門收件。 羅斯福路四段，指的是地理上的`區域`，而不是一個`地址`，因為光是看到「羅斯福路四段」並無法得知正確的所在位置。```X 台北市大安區羅斯福路四段```羅斯福路四段1號，指的是地理上的`絕對位置`，並可正確的知道所在位置。```O 台北市大安區羅斯福路四段1號```<jupyter_code>inputSTR = "台北市大安區羅斯福路四段1號"
result = articut.parse(inputSTR)

#列出所有的台灣地址
addTWLIST = articut.getAddTWLIST(result)
print("## Address:")
pprint(addTWLIST)
#使用 localRE 工具取得地址分段細節
countyResult = articut.localRE.getAddressCounty(result)
print("## localRE: 縣")
pprint(countyResult)

cityResult = articut.localRE.getAddressCity(result)
print("\n## localRE: 市")
pprint(cityResult)

districtResult = articut.localRE.getAddressDistrict(result)
print("\n## localRE: 區")
pprint(districtResult)

townshipResult = articut.localRE.getAddressTownship(result)
print("\n## localRE: 鄉里")
pprint(townshipResult)

townResult = articut.localRE.getAddressTown(result)
print("\n## localRE: 鎮")
pprint(townResult)

villageResult = articut.localRE.getAddressVillage(result)
print("\n## localRE: 村")
pprint(villageResult)

neighborhoodResult = articut.localRE.getAddressNeighborhood(result)
print("\n## localRE: 鄰")
pprint(neighborhoodResult)

roadResult = articut.localRE.getAddressRoad(result)
print("\n## localRE: 路")
pprint(roadResult)

sectionResult = articut.localRE.getAddressSection(result)
print("\n## localRE: 段")
pprint(sectionResult)

alleyResult = articut.localRE.getAddressAlley(result)
print("\n## localRE: 巷、弄")
pprint(alleyResult)

numberResult = articut.localRE.getAddressNumber(result)
print("\n## localRE: 號")
pprint(numberResult)

floorResult = articut.localRE.getAddressFloor(result)
print("\n## localRE: 樓")
pprint(floorResult)

roomResult = articut.localRE.getAddressRoom(result)
print("\n## localRE: 室")
pprint(roomResult)<jupyter_output><empty_output><jupyter_text>基於 TF-IDF 算法的關鍵詞抽取* sentence 為要提取關鍵詞的文本	* topK 為提取幾個 TF-IDF 的關鍵詞，預設值為 20	* withWeight 為是否返回關鍵詞權重值，預設值為 False	* allowPOS 僅抽取指定詞性的詞，預設值為空，亦即全部抽取* articut.analyse.TFIDF(idf_path=None) 新建 TFIDF 物件，idf_path 為 IDF 語料庫路徑<jupyter_code>tfidfResult = articut.analyse.extract_tags(result)
print("## TF-IDF:")
pprint(tfidfResult)<jupyter_output><empty_output><jupyter_text>使用 Textrank 演算法* sentence 為要提取關鍵詞的文本	* topK 為提取幾個 TF-IDF 的關鍵詞，預設值為 20	* withWeight 為是否返回關鍵詞權重值，預設值為 False	* allowPOS 僅抽取指定詞性的詞，預設值為空，亦即全部抽取* articut.analyse.TextRank() 新建 TextRank 物件<jupyter_code>textrankResult = articut.analyse.textrank(result)
print("## Textrank:")
pprint(textrankResult)<jupyter_output><empty_output><jupyter_text>列出目前可使用的 Articut 版本通常版本號愈大，功能越多。<jupyter_code>versions = articut.versions()
if versions["status"]:
    print("## Avaliable Versions:")
    pprint(versions)<jupyter_output><empty_output><jupyter_text>使用法律文件工具<jupyter_code>inputSTR = """被告前因非法持有槍械，業經前案判決非法持有可發射子彈具殺傷力之槍枝罪，處有期徒刑參年陸月，併科罰金新臺幣拾萬元。
於前案偵查過程中，南投縣政府警察局集集分局之員警，持本院核發之105年度聲搜字第165號搜索票。"""
result = articut.parse(inputSTR, level="lv2")
lawsToolkit = LawsToolkit(result)
print("## Crime")
pprint(lawsToolkit.getCrime())
print("## Criminal Responsibility")
pprint(lawsToolkit.getCriminalResponsibility())
print("## Event Reference")
pprint(lawsToolkit.getEventRef())
print("## Law Article")
pprint(lawsToolkit.getLawArticle())<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14348646947765892, 'fraction_numerical': 0.004562617998741347, 'mean_word_length': 9.88527397260274, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 41, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '88055', 'license': 'MIT', 'n_tokens_mistral': 3334, 'n_tokens_neox': 3489, 'n_words': 374, 'path': 'intern_practice/ArticutAPI/ArticutAPI.ipynb', 'repo_name': 'howardsukuan/LokiHub', 'size': '6356'}