├── .gitignore ├── ArticutAPI.ipynb ├── ArticutAPI.py ├── ArticutAPI ├── ArticutAPI.py ├── MP_ArticutAPI.py ├── Toolkit │ ├── NER.py │ ├── __init__.py │ ├── analyse.py │ ├── data │ │ ├── idf.json │ │ └── idf.py │ ├── graphQL.html │ ├── graphQL.py │ ├── localRE.py │ └── toolkits.py ├── WS_ArticutAPI.py └── __init__.py ├── ArticutGraphQL.py ├── Blog_CodeNLP ├── ArticutAPI.py ├── Blog_ReadMe.md ├── NLP_blog01.py ├── NLP_blog02.py ├── NLP_blog03.py ├── NLP_blog04.py └── Toolkit ├── Demos ├── AliasTag │ └── AliasTag.py ├── GraphSearch_Alike │ ├── GraphSearch_Alike.py │ └── myDICT.json ├── KeyWordExtraction │ ├── InputString.txt │ └── KeyWordDemo.py ├── LocationDetection │ ├── LocationDemo.py │ ├── PengHu.txt │ └── __init__.py ├── NER_Food │ ├── NER_Food.py │ └── ReadMe.md ├── NovelAnalysis │ ├── ReadMe.md │ └── novel_analysis.py ├── PlaceDetection │ ├── PengHu.txt │ └── PlaceDemo.py ├── Preprocessing │ └── comma.py ├── PrimarySchoolMath │ ├── DT_MathWordTW.json │ ├── Example.txt │ ├── PSMath01.py │ ├── intent │ │ ├── Loki_Calculation_Addition.py │ │ ├── Loki_Calculation_Comparison.py │ │ ├── Loki_Definition.py │ │ └── Loki_Question.py │ ├── intentFunction.py │ └── ref │ │ ├── Calculation_Addition.ref │ │ ├── Calculation_Comparison.ref │ │ ├── Definition.ref │ │ └── Question.ref ├── StockNews │ └── HeadlineReader.py ├── StorySimilarity │ └── StorySimilarity.py └── UserDefined_nonChinese │ ├── UserDefined_nonChinese.py │ └── myEnglishDICT.json ├── Docs ├── Articut-GraphQL │ ├── ReadMe_EN.md │ ├── ReadMe_TW.md │ ├── Tutorial_EN.md │ └── Tutorial_TW.md ├── KNOWLEDGE_currency.md ├── LocalRE.md ├── fonts │ ├── FakePearl-Regular.woff │ ├── FakePearl-Regular.woff2 │ ├── slate-7b7da4fe.ttf │ ├── slate-cfc9d06b.eot │ ├── slate-e55b8307.svg │ ├── slate.woff │ └── slate.woff2 ├── images │ ├── Articut_img01-0e747758.png │ ├── favicon-e95f49ea.png │ └── logo-e4b85fef.png ├── index.html ├── javascripts │ ├── all-e033bdd3.js │ └── all_nosearch-ec00d1ce.js └── stylesheets │ ├── print-68c56d0f.css │ └── screen-719230ab.css ├── LICENSE ├── MANIFEST.in ├── MP_ArticutAPI.py ├── Public_UserDefinedDict ├── KNOWLEDGE_Bible_Characters.json ├── KNOWLEDGE_BuddhistPerson.json ├── KNOWLEDGE_China_Scenery.json ├── KNOWLEDGE_Emerging_Stock_Company.json ├── KNOWLEDGE_MLB_Teams.json ├── KNOWLEDGE_NBA_Teams.json ├── KNOWLEDGE_NCDRTW.json ├── KNOWLEDGE_NativeTaiwaneseName.json ├── KNOWLEDGE_TaiwanMountains.json ├── KNOWLEDGE_TaiwanTVChannel.json ├── KNOWLEDGE_WNBA_Teams.json ├── KNOWLEDGE_animeCharacters.json ├── KNOWLEDGE_artworks.json ├── KNOWLEDGE_bankTW.json ├── KNOWLEDGE_criminalLawTW.json ├── KNOWLEDGE_currency.json ├── KNOWLEDGE_dirtyWordsTW.json ├── KNOWLEDGE_financeTW.json ├── KNOWLEDGE_fruit.json ├── KNOWLEDGE_govTW.json ├── KNOWLEDGE_herbs.json ├── KNOWLEDGE_legalTerm.json ├── KNOWLEDGE_medDiagnosis.json ├── KNOWLEDGE_medGear.json ├── KNOWLEDGE_medRecord.json ├── KNOWLEDGE_medTreatment.json ├── KNOWLEDGE_pharmacyTW.json ├── KNOWLEDGE_procedureLawTW.json ├── KNOWLEDGE_pttCompanyAlias.json ├── KNOWLEDGE_riverTW.json ├── KNOWLEDGE_schoolTW.json ├── KNOWLEDGE_三國人物.json ├── KNOWLEDGE_中天觀眾行話.json ├── KNOWLEDGE_日本人名.json ├── KNOWLEDGE_日本姓氏.json ├── KNOWLEDGE_水滸傳人物.json ├── KNOWLEDGE_紅樓夢人物.json ├── KNOWLEDGE_西遊記人物.json ├── KNOWLEDGE_道教神明.json └── KNOWLEDGE_音譯外來語工具名稱.json ├── README.md ├── Sample_Code ├── Java │ ├── ArticutExample.java │ └── ReadMe.txt ├── JavaScript │ ├── Articut_JavaScript.js │ └── Articut_jQuery.js └── R │ └── ArticutExample.R ├── Screenshots ├── Articut-GraphQL.png ├── Articut-GraphQL_Example01.png ├── Articut-GraphQL_Example02.png ├── GraphiQL_Example01.png ├── GraphiQL_Example02.png ├── attributes_of_doc.gif ├── attributes_of_doc_EN.gif ├── ner_of_doc.png └── requests_installer.png ├── WS_ArticutAPI.py ├── Windows_Module_Installer ├── ReadMe.md └── requests_installer.py ├── as_test_1k.utf8 └── setup.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.json 3 | .* 4 | account.info 5 | __init__.py 6 | ForTest 7 | *.egg-info 8 | build 9 | dist 10 | build.md 11 | -------------------------------------------------------------------------------- /ArticutAPI.py: -------------------------------------------------------------------------------- 1 | ArticutAPI/ArticutAPI.py -------------------------------------------------------------------------------- /ArticutAPI/Toolkit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/ArticutAPI/Toolkit/__init__.py -------------------------------------------------------------------------------- /ArticutAPI/Toolkit/analyse.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | import json 5 | import re 6 | import unicodedata 7 | from copy import deepcopy 8 | from math import log10 9 | try: 10 | from data.idf import aidf 11 | except: 12 | from .data.idf import aidf 13 | 14 | if aidf: 15 | aidfDICT = deepcopy(aidf) 16 | 17 | class WordExtractionTFIDF(object): 18 | def __init__(self, aidf=aidf): 19 | self.thd = 0.06 20 | self.idfDICT, self.docCount = self._getIdfDict("idf.json") 21 | 22 | def __str__(self): 23 | return "Articut API KeywordExtraction" 24 | 25 | def _getIdfDict(self, fn): 26 | import os 27 | fn = "{}/data/{}".format(os.path.dirname(os.path.abspath(__file__)), fn) 28 | try: 29 | if os.path.isfile(fn): 30 | aidf = json.load(open(fn, "r", encoding=("UTF-8"))) 31 | # idfDICT = {"":[fn id list], w:[ids, ids, ...], ...} 32 | return aidf, len(aidf[""]) 33 | except Exception as e: 34 | print("idf dict import error.") 35 | print(str(e)) 36 | 37 | if aidfDICT: 38 | return aidfDICT, len(aidfDICT[""]) 39 | else: 40 | return {}, 0 41 | 42 | def eval(self, wct, wlst, dct, idfd): 43 | # wlst = {w:ct, w:ct, ...} 44 | # idfd= {w:[ids, ids, ...], ...} 45 | d = {} 46 | for w in wlst: 47 | if "" == w: 48 | continue 49 | if w not in idfd: # 未知詞彙 wct = 1 50 | sdt = 1 51 | else: 52 | sdt = len(idfd[w]) # 已知詞彙 53 | # tf, idf, tfidf 計算 54 | tf = wlst[w]/float(wct) 55 | idf = log10(float(dct)/sdt) 56 | tfidf = tf*idf 57 | # d[w] = (tf, idf, tfidf) 58 | d[w] = tfidf 59 | return d 60 | 61 | def getTfList(self, wLIST): 62 | d = {} 63 | wct = 0 64 | for k in wLIST: 65 | # Ignore '' 66 | if "" == k: 67 | continue 68 | # Ignore punctuation 69 | if 1 == len(k) and unicodedata.category(k).startswith("P"): 70 | continue 71 | if k not in d: 72 | d[k] = 1 73 | wct += 1 74 | else: 75 | d[k] += 1 76 | wct += 1 77 | return d, wct 78 | 79 | def sortByTfidf(self, evlDICT): 80 | # evldict = _evld = {w:(tf,idf,tfidf)} 81 | lst = list(evlDICT.items()) 82 | # lst = [ (u"\u4e00", 0.02395209580838323), ... ] 83 | lst = sorted(lst, key=lambda x: x[1], reverse=True) 84 | return lst 85 | 86 | def extractKeyword(self, inputSTR, topK, withWeight, allowPOS): 87 | # self.thd = topK/100.0 # 取結果的前 topK% 個詞 88 | self.thd = topK # 取結果的前 topK 個詞 89 | if self.thd < 0: self.thd = 20 90 | 91 | # get word list 92 | if type(inputSTR) == list: 93 | wordLIST = inputSTR 94 | else: 95 | wordLIST = inputSTR.split("/") # wordLIST = ["沒有", "人", ...] 96 | 97 | # get tfDICT and get wct of the inputSTR 98 | tfDICT, wct = self.getTfList(wordLIST) # tfDICT = {"沒有":1, "命運": 2, ...} 99 | 100 | # get tfidf dict 101 | evalDICT = self.eval(wct, tfDICT, self.docCount, self.idfDICT) # evalDict = {w:tfidf, ...} 102 | 103 | # sort by tfidf 104 | rst = self.sortByTfidf(evalDICT) 105 | 106 | # filter by threshold 107 | # keyWordLIST = rst[:round(self.thd*len(rst))] # 搭配 self.thd = topK/100.0 108 | keyWordLIST = rst[:self.thd] # 搭配 self.thd = topK 109 | 110 | # return key word list 111 | if withWeight is False: 112 | newLIST = [] 113 | for k in keyWordLIST: 114 | newLIST.append(k[0]) 115 | return newLIST 116 | else: 117 | return keyWordLIST 118 | 119 | class WordExtractionTextRank(object): 120 | def __init__(self): 121 | self.dWeight = 0.85 122 | self.initScoreINT = 1 123 | self.winSizeINT = 5 124 | self.stopWordTagsLIST = ["[^<]*?", 125 | "[^<]*?", 126 | "[^<]*?", 127 | "[^<]*?", 128 | "[^<]*?", 129 | "[^<]*?", 130 | "[^<]*?"] 131 | self.stopWordPat = re.compile("|".join(self.stopWordTagsLIST)) 132 | self.stripPat = re.compile("(?<=>).*?(?=<)") 133 | 134 | def _getScore(self, scoreLIST, outLIST, linksLIST, refID): 135 | i = 0 136 | score = 0 137 | while i < len(scoreLIST): 138 | if i != refID: 139 | score += 1-self.dWeight + self.dWeight*(scoreLIST[i] * outLIST[i] / linksLIST[i]) 140 | i += 1 141 | return score 142 | 143 | def itrRanking(self, wordRefLIST, matrixLIST, iterTimesINT): 144 | # wordRefLIST = ['命運', '自己', '手', '人', '決定', '你', '命運'] 145 | # matrixLIST = [[0, 1, 1, 0, ...], [1, 0, 2, 2, ...], ... ] 146 | # iterTimesINT = 5 147 | linksLIST = [] 148 | for outLIST in matrixLIST: 149 | ct = 0 150 | for i in outLIST: 151 | ct += i 152 | linksLIST.append(ct) 153 | 154 | scoreLIST = [self.initScoreINT]*len(wordRefLIST) 155 | t = 0 156 | while t < iterTimesINT: 157 | tmpLIST = [] 158 | for i in range(len(matrixLIST)): 159 | score = self._getScore(scoreLIST, matrixLIST[i], linksLIST, i) 160 | tmpLIST.append(score) 161 | scoreLIST = tmpLIST[:] 162 | t += 1 163 | 164 | return scoreLIST 165 | 166 | def mappingWords(self, scoreLIST, wordRefLIST): 167 | # wordRefLIST = ['命運', '自己', '手', '人', '決定', '你', '命運'] 168 | # scoreLIST = [1.1575125520833334, 2.438575, 1.9919230208333336, 1.4989894270833335, ...] 169 | sortLIST = [] 170 | for i in range(len(scoreLIST)): 171 | sortLIST.append([wordRefLIST[i], scoreLIST[i]]) 172 | sortLIST = sorted(sortLIST, key=lambda x: x[1]) 173 | sortLIST.reverse() 174 | return sortLIST 175 | 176 | def rankWords(self, wordLIST, iterTimesINT): 177 | # wordLIST = ['命運', '自己', '手', '人', '決定', '你', '命運'] 178 | wordRefLIST = [] 179 | for w in wordLIST: 180 | if w not in wordRefLIST: 181 | wordRefLIST.append(w) 182 | # wordRefLIST = ['命運', '自己', '決定', '手', '你', '人'] 183 | matrixLIST = [[0]*len(wordRefLIST) for item in range(len(wordRefLIST))] 184 | # matrixLIST = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] 185 | # matrixLIST = [['命運', '自己', '決定', '手', '你', '人'], for(命運) 186 | # ['命運', '自己', '決定', '手', '你', '人'], for(自己) 187 | # ['命運', '自己', '決定', '手', '你', '人'], for(決定) 188 | # ['命運', '自己', '決定', '手', '你', '人'], for(手) 189 | # ...... ] 190 | 191 | for i in range(len(wordLIST)): 192 | startOffsetINT = i-self.winSizeINT 193 | endOffsetINT = i+self.winSizeINT+1 194 | if i-self.winSizeINT < 0: 195 | startOffsetINT = 0 196 | # print(wordLIST[startOffsetINT:i], wordLIST[i], wordLIST[i+1:endOffsetINT]) 197 | 198 | for w in wordLIST[startOffsetINT:i] + wordLIST[i+1:endOffsetINT]: 199 | matrixLIST[wordRefLIST.index(wordLIST[i])][wordRefLIST.index(w)] += 1 200 | 201 | scoreLIST = self.itrRanking(wordRefLIST, matrixLIST, iterTimesINT) 202 | wordRankLIST = self.mappingWords(scoreLIST, wordRefLIST) 203 | return wordRankLIST 204 | 205 | def extractWords(self, resultLIST): 206 | resultSTR = "".join([x for x in resultLIST if len(x)>1]) 207 | wordLIST = [] 208 | stopwordLIST = [x.group() for x in self.stopWordPat.finditer(resultSTR)] 209 | for sw in stopwordLIST: 210 | resultSTR = resultSTR.replace(sw, "") 211 | wordLIST = [x.group() for x in self.stripPat.finditer(resultSTR) if len(x.group())>0] 212 | return wordLIST 213 | 214 | def extractKeyword(self, resultDICT, iterTimesINT=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')): 215 | resultLIST = resultDICT['result_pos'] 216 | # resultLIST = 217 | # [ '沒有人可以決定你的命運', 218 | # ',', 219 | # '命運在自己的手上', 220 | # '。' ] 221 | wordLIST = self.extractWords(resultLIST) 222 | # wordLIST = ['命運', '自己', '決定', '手', '你', '人'] 223 | wordRankLIST = self.rankWords(wordLIST, iterTimesINT) 224 | # wordRankLIST = [['命運', 5.591625666787958], 225 | # ['自己', 3.4637188376903927], 226 | # ['你', 3.4637188376903927], 227 | # ['決定', 3.4637188376903927], 228 | # ['手', 2.959546855830475], 229 | # ['人', 2.9595468558304745]] 230 | if iterTimesINT < 0: 231 | iterTimesINT = 20 232 | if withWeight is False: 233 | tmpLIST = [] 234 | for w in wordRankLIST: 235 | tmpLIST.append(w[0]) 236 | return tmpLIST[:iterTimesINT] 237 | else: 238 | return wordRankLIST[:iterTimesINT] 239 | 240 | class AnalyseManager(object): 241 | def __init__(self): 242 | self.tfidfOBJ = WordExtractionTFIDF() 243 | self.txtrankOBJ = WordExtractionTextRank() 244 | self.POSDICT = {'n':'', 'v':'', 'a':'', 'p':''} 245 | 246 | def convertPOS(self, POSTOUPLE): 247 | return POSTOUPLE 248 | 249 | def TFIDF(self, idf_path=None): 250 | if idf_path != None: 251 | self.tfidfOBJ._getIdfDict(idf_path) 252 | 253 | def extractTags(self, resultDICT, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')): 254 | if "result_segmentation" in resultDICT: 255 | pass 256 | else: 257 | return None 258 | try: 259 | allowPOS = self.convertPOS(allowPOS) 260 | result = self.tfidfOBJ.extractKeyword(resultDICT["result_segmentation"], topK, withWeight, allowPOS) 261 | return result 262 | except Exception as e: 263 | print(str(e)) 264 | return None 265 | 266 | def extract_tags(self, resultDICT, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')): 267 | # Alias of extractTags() for developers from older CWS solutions. 268 | return self.extractTags(resultDICT, topK, withWeight, allowPOS=('ns', 'n', 'vn', 'v')) 269 | 270 | def textrank(self, resultDICT, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')): 271 | # Key word extraction and rank by the TextRank algorithm 272 | # Alias of jieba textrank() 273 | # topK = iterative times 274 | if "result_segmentation" in resultDICT and "result_pos" in resultDICT: 275 | pass 276 | else: 277 | return None 278 | try: 279 | allowPOS = self.convertPOS(allowPOS) 280 | return self.txtrankOBJ.extractKeyword(resultDICT, topK, withWeight, allowPOS) 281 | except Exception as e: 282 | print(str(e)) 283 | return None 284 | -------------------------------------------------------------------------------- /ArticutAPI/Toolkit/graphQL.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
Loading...
30 | 134 | 135 | -------------------------------------------------------------------------------- /ArticutAPI/__init__.py: -------------------------------------------------------------------------------- 1 | try: 2 | from .ArticutAPI import Articut 3 | from .Toolkit.analyse import AnalyseManager 4 | from .Toolkit.localRE import TaiwanAddressAnalizer 5 | from .Toolkit.toolkits import * 6 | from .Toolkit.NER import GenericNER 7 | except: 8 | from ArticutAPI import Articut 9 | from Toolkit.analyse import AnalyseManager 10 | from Toolkit.localRE import TaiwanAddressAnalizer 11 | from Toolkit.toolkits import * 12 | from Toolkit.NER import GenericNER 13 | 14 | #__all__ = ["Articut"] -------------------------------------------------------------------------------- /ArticutGraphQL.py: -------------------------------------------------------------------------------- 1 | ArticutAPI/Toolkit/graphQL.py -------------------------------------------------------------------------------- /Blog_CodeNLP/ArticutAPI.py: -------------------------------------------------------------------------------- 1 | ../ArticutAPI.py -------------------------------------------------------------------------------- /Blog_CodeNLP/Blog_ReadMe.md: -------------------------------------------------------------------------------- 1 | Blog_CodeNLP 目錄下的 .py 檔案,皆為 https://blog.droidtown.co 中的範例檔。 2 | 若需詳細的操作說明,請直接到 https://blog.droidtown.co 中查詢閱讀。 3 | -------------------------------------------------------------------------------- /Blog_CodeNLP/NLP_blog01.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | from ArticutAPI import Articut 5 | 6 | text = "處理自然語言文字" 7 | 8 | 9 | articut = Articut(username="", apikey="") 10 | result = articut.parse(text) 11 | print(result["result_segmentation"].split("/")[3]) -------------------------------------------------------------------------------- /Blog_CodeNLP/NLP_blog02.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | from ArticutAPI import Articut 5 | 6 | text = "研究這個研究的研究已經被研究許多年了" 7 | 8 | 9 | articut = Articut(username="", apikey="") 10 | result = articut.parse(text) 11 | 12 | #Articut 的 POS 標記斷詞結果在 "result_pos" 中。 13 | print(result["result_pos"]) 14 | 15 | 16 | 17 | print("有幾個動詞的「研究」呢?") 18 | verbLIST = articut.getVerbStemLIST(result, indexWithPOS=False) 19 | 20 | verbCounter = 0 21 | for sentence in verbLIST: #verbLIST 中,每「一個」句子是一個獨立的 list,故要先進入 sentence,再計算其中的 "研究" 22 | for v in sentence: 23 | if v[-1] == "研究": 24 | print("發現動詞「研究」 ,位於原句的 {}~{} 位置".format(v[0], v[1])) 25 | verbCounter = verbCounter + 1 26 | 27 | print("共有 {} 個『研究』是動詞。".format(verbCounter)) 28 | 29 | 30 | 31 | print("有幾個名詞的「研究」呢?") 32 | nounLIST = articut.getNounStemLIST(result, indexWithPOS=False) 33 | 34 | nounCounter = 0 35 | for sentence in nounLIST: #nounLIST 中,每「一個」句子是一個獨立的 list,故要先進入 sentence,再計算其中的 "研究" 36 | for n in sentence: 37 | if n[-1] == "研究": 38 | print("發現名詞「研究」 ,位於原句的 {}~{} 位置".format(n[0], n[1])) 39 | nounCounter = nounCounter + 1 40 | 41 | print("共有 {} 個『研究』是名詞。".format(verbCounter)) -------------------------------------------------------------------------------- /Blog_CodeNLP/NLP_blog03.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | #from nltk.tokenize import sent_tokenize, word_tokenize 5 | 6 | #text = "I know all work and no play can make Jack a dull boy. I didn't know all play and no work would make Jack a drama queen." 7 | 8 | #sentences = sent_tokenize(text) 9 | #print("句子的 Token:{}".format(sentences)) 10 | #words = word_tokenize(text) 11 | #print("字彙的 Token:{}".format(words)) 12 | 13 | 14 | 15 | #text = "I didn't do it." 16 | #print("用 .split():", text.split()) 17 | #print("用 .word_tokenization():", word_tokenize(text)) 18 | 19 | 20 | 21 | from ArticutAPI import Articut 22 | import re 23 | 24 | text = "整天工作不玩耍,型男也會變傻瓜。" 25 | 26 | 27 | articut = Articut(username="", apikey="") 28 | result = articut.parse(text) 29 | 30 | # 利用 ArticutAPI 做中文「句子」的 tokenization 31 | sentenceTokenLIST = [] 32 | for s in result["result_pos"]: #在 result_pos 裡,標點符號不會被加上 POS 標記,因此字串長度為 1。 33 | if len(s) != 1: 34 | sentenceTokenLIST.append(re.sub("]*?>", "", s)) 35 | 36 | print("句子 token 的結果為:{}".format(sentenceTokenLIST)) 37 | 38 | 39 | # 利用 ArticutAPI 做中文「詞彙」的 tokenization 40 | sentenceSpliter = [] 41 | for s in result["result_pos"]: #在 result_pos 裡,標點符號不會被加上 POS 標記,因此字串長度為 1。 42 | if len(s) == 1: 43 | sentenceSpliter.append(s) 44 | 45 | wordTokenLIST = result["result_segmentation"].split("/") 46 | for i in wordTokenLIST: 47 | if i in sentenceSpliter: 48 | wordTokenLIST.remove(i) 49 | 50 | print("詞彙 Token 的結果為:{}".format(wordTokenLIST)) -------------------------------------------------------------------------------- /Blog_CodeNLP/NLP_blog04.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | #from nltk.corpus import stopwords 5 | #EngStopWords = set(stopwords.words('english'))#這裡設定稍後取用 English 的停用詞語料庫 6 | #text = "There is an apple on the table." 7 | #for word in text.split(): 8 | #if word in EngStopWords: 9 | #pass #如果詞彙是個英文的停用詞的話,就略過不處理。 10 | #else: 11 | #print(word) #如果詞彙不是英文的停用詞的話,呈現在畫面上。 12 | 13 | 14 | from ArticutAPI import Articut 15 | 16 | text = "餐桌上面有一顆蘋果" 17 | 18 | articut = Articut(username="", apikey="") 19 | result = articut.parse(text) 20 | 21 | contentWordLIST = articut.getContentWordLIST(result) 22 | for sentence in contentWordLIST: 23 | for word in sentence: 24 | print(word[-1]) -------------------------------------------------------------------------------- /Blog_CodeNLP/Toolkit: -------------------------------------------------------------------------------- 1 | ../Toolkit -------------------------------------------------------------------------------- /Demos/AliasTag/AliasTag.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | 4 | try: 5 | # Installed via pip install 6 | try: 7 | from .ArticutAPI import Articut 8 | except: 9 | from ArticutAPI import Articut 10 | except: 11 | # Installed via git clone 12 | import sys 13 | sys.path.append("../..") 14 | from ArticutAPI import Articut 15 | 16 | import json 17 | from pprint import pprint 18 | 19 | if __name__ == "__main__": 20 | 21 | try: 22 | #使用自己的斷詞額度。 23 | with open("../../account.info", "r") as f: 24 | userDICT = json.loads(f.read()) 25 | username = userDICT["email"] 26 | apikey = userDICT["apikey"] 27 | atc = Articut(username=userDICT["email"], apikey=userDICT["apikey"]) 28 | except: 29 | #使用免費的斷詞額度。 30 | #實體化 Articut() 31 | atc = Articut() 32 | 33 | #Demo 用的文字:載入政府機構名稱前。 34 | inputSTR = "國軍退除役官兵輔導委員會簡稱退輔會。 " 35 | resultDICT = atc.parse(inputSTR) 36 | print("1. 政府機構名稱直接「斷詞」處理:") 37 | pprint(resultDICT["result_pos"]) 38 | print("=====================") 39 | 40 | inputSTR = "國軍退除役官兵輔導委員會簡稱退輔會。 " 41 | resultDICT = atc.parse(inputSTR, userDefinedDictFILE="../../Public_UserDefinedDict/KNOWLEDGE_govTW.json") 42 | print("2. 政府機構名稱用「自定字典」處理:") 43 | pprint(resultDICT["result_pos"]) 44 | print("=====================") 45 | 46 | inputSTR = "國軍退除役官兵輔導委員會簡稱退輔會。 " 47 | resultDICT = atc.parse(inputSTR, userDefinedDictFILE="../../Public_UserDefinedDict/KNOWLEDGE_govTW.json") 48 | print("3. 政府機構名稱用「自定字典」處理,再依字典名稱調整「標記」。") 49 | tagName = "../../Public_UserDefinedDict/KNOWLEDGE_govTW.json".split("/")[-1].split(".")[0] #取得 KNOWLEDGE_gov 50 | pprint([result.replace("UserDefined", tagName) for result in resultDICT["result_pos"]]) 51 | print("=====================") 52 | -------------------------------------------------------------------------------- /Demos/GraphSearch_Alike/GraphSearch_Alike.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | try: 5 | # Installed via pip install 6 | try: 7 | from .ArticutAPI import Articut 8 | except: 9 | from ArticutAPI import Articut 10 | except: 11 | # Installed via git clone 12 | import sys 13 | sys.path.append("../..") 14 | from ArticutAPI import Articut 15 | 16 | import json 17 | import re 18 | 19 | caseLIST = [ 20 | "吳金順於108年8月21日下午6時18分許起,接到詐欺集團成員佯裝為其友人之電話向其借款云云,致其陷於錯誤,因而先後於108年8月22日中午12時37分許、同日下午2時50分許,在桃園市桃園區中山東路32之20號之5陽信商業銀行桃園分行,臨櫃匯款15萬元、25萬元至右列帳戶。", 21 | "林凌強於108年8月22日晚間7時30分許,接到詐欺集團成員佯裝為廠商人員,佯稱須依其指示操作始得取消重複訂單云云,致其陷於錯誤,因而於同日晚間8時17分許、8時26分許,在新北市淡水區民族路56號全家便利商店淡水竹勝店,轉帳2萬9,989元2筆至右列帳戶。", 22 | "陳純於108年7月25日下午3時13分許,接到詐欺集團成員佯裝為姪子陳英傑之電話向其借款云云,致其陷於錯誤,因而於108年7月26日上午11時44分許,在臺北市松山區南京東路5段184號1樓臺灣銀行中崙分行,臨櫃匯款15萬元至右列帳戶。", 23 | "沈末葉於108年7月31日下午3時17分許起,接到詐欺集團成員佯裝為其同學陳雪瑩之電話向其借款云云,致其陷於錯誤,因而於108年8月1日下午3時44分許,在臺中市北屯區文心路4段281號玉山商業銀行文心分行,臨櫃匯款29萬8,000元至右列帳戶。", 24 | "陳翁淑娟於108年7月30日晚間8時許起,接到詐欺集團成員佯裝為姚姓廠商朋友之電話向其借款云云,致其陷於錯誤,因而於108年8月1日下午3時13分許,由其媳婦范馨尹在高雄市三民區鼎力路142號陽信銀行鼎力分行,臨櫃匯款3萬元至右列帳戶。," 25 | ] 26 | 27 | entityReLIST = ["([^<]*?)", 28 | "([^<]*?)", 29 | "([^<]*?)", 30 | "([^<]*?)", 31 | "([^<]*?)", 32 | "()[^<]*?()"] 33 | entityReSTR = "([^<]*?)?"+"|".join(entityReLIST) 34 | 35 | def graphExtractor_verb(posSTR, verbSTR): 36 | '''' 37 | 從輸入的字串中,抓出以 verbSTR 為核心的,前後實體 (Entity) 關係。 38 | ''' 39 | 40 | pat = re.compile("({})+(?:(?!.).)*?{}(?:(?!.).)*?({})+".format(entityReSTR, verbSTR, entityReSTR)) 41 | resultLIST = [re.sub("[^<]*", "", p.group(0)) for p in pat.finditer(posSTR)] 42 | return resultLIST 43 | 44 | def graphSubjectExtractor(posSTR, verbSTR): 45 | ''' 46 | 取出動詞 verbSTR 之前的實體,做為主詞 subject 47 | ''' 48 | pat = re.compile("({})+(?:(?!.).)*?(?={})".format(entityReSTR, verbSTR)) 49 | resultLIST = [p.group(0) for p in re.finditer(pat, posSTR)] 50 | return resultLIST 51 | 52 | def graphObjectExtractor(posSTR, verbSTR): 53 | ''' 54 | 取出動詞 verbSTR 之後的實體,做為受詞 object 55 | ''' 56 | pat = re.compile("(?<={})(?:(?!.).)*?({})+".format(verbSTR, entityReSTR)) 57 | resultLIST = [p.group(0) for p in re.finditer(pat, posSTR)] 58 | return resultLIST 59 | 60 | def posTagPurger(posSTR): 61 | ''' 62 | 移除 POS 的標記,並把所有的詞彙結合成單一字串 63 | ''' 64 | pat = re.compile("") 65 | resultSTR = re.sub(pat, "", posSTR) 66 | return resultSTR 67 | 68 | if __name__ == "__main__": 69 | 70 | with open("../../account.info", encoding="utf-8") as f: 71 | accountINFO = json.loads(f.read()) 72 | myDICT = "./myDICT.json" 73 | 74 | articut = Articut(username=accountINFO["email"], apikey=accountINFO["apikey"]) 75 | articutResult = articut.parse(caseLIST[0], userDefinedDictFILE=myDICT) 76 | 77 | verbSTR = "佯裝" 78 | targetSentenceLIST = [] 79 | for a in articutResult["result_pos"]: 80 | if verbSTR in a: 81 | targetSentenceLIST.append(graphExtractor_verb(a, "佯裝")) 82 | 83 | subjectLIST = [] 84 | for t in targetSentenceLIST: 85 | for sentence in t: 86 | subjectLIST.append(posTagPurger(graphSubjectExtractor(sentence, verbSTR)[0])) 87 | 88 | objectLIST = [] 89 | for t in targetSentenceLIST: 90 | for sentence in t: 91 | objectLIST.append(posTagPurger(graphObjectExtractor(sentence, verbSTR)[0])) 92 | 93 | 94 | print(subjectLIST) 95 | print(verbSTR) 96 | print(objectLIST) 97 | 98 | 99 | -------------------------------------------------------------------------------- /Demos/GraphSearch_Alike/myDICT.json: -------------------------------------------------------------------------------- 1 | { 2 | "詐欺集團":["詐騙集團"] 3 | } 4 | -------------------------------------------------------------------------------- /Demos/KeyWordExtraction/InputString.txt: -------------------------------------------------------------------------------- 1 | 沒有人可以決定你的命運,命運掌握在自己的手上。 -------------------------------------------------------------------------------- /Demos/KeyWordExtraction/KeyWordDemo.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | # FileName: KeyWordDemo.py 4 | # Developer: Trueming (trueming@gmail.com) 5 | 6 | 7 | #Sample Text "InputString.txt" 8 | 9 | try: 10 | # Installed via pip install 11 | try: 12 | from .ArticutAPI import Articut 13 | except: 14 | from ArticutAPI import Articut 15 | except: 16 | # Installed via git clone 17 | import sys 18 | sys.path.append("../..") 19 | from ArticutAPI import Articut 20 | 21 | import json 22 | 23 | if __name__ == "__main__": 24 | 25 | try: 26 | #使用自己的斷詞額度。 27 | with open("../../account.info", "r") as f: 28 | userDICT = json.loads(f.read()) 29 | username = userDICT["email"] 30 | apikey = userDICT["apikey"] 31 | atc = Articut(username=userDICT["email"], apikey=userDICT["apikey"]) 32 | except: 33 | #使用免費的斷詞額度。 34 | #實體化 Articut() 35 | atc = Articut() 36 | 37 | # 載入 Demo 用的文字 38 | text = open("./InputString.txt", "r").read() 39 | sentLIST = text.split("\n") 40 | 41 | print("ArticutAPI Term Extraction Demo") 42 | for sentence in sentLIST: 43 | if "" == sentence.strip(): 44 | continue 45 | 46 | result = atc.parse(sentence) 47 | if result["status"]: 48 | print("{}\nInput: {}".format('#'*20 , sentence)) 49 | 50 | # TextRank 抽取句子關鍵詞並排序 51 | wordLIST = atc.analyse.textrank(result) 52 | print("TextRank:", wordLIST) 53 | # TFIDF 抽取句子關鍵詞 54 | wordLIST = atc.analyse.extract_tags(result) 55 | print("TF-IDF:", wordLIST) 56 | -------------------------------------------------------------------------------- /Demos/LocationDetection/LocationDemo.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # FileName: LocationDemo.py 4 | # Developer: Peter. w (peterwolf.wang@gmail.com) 5 | 6 | 7 | #Sample Text "PengHu.txt" Source: 8 | #https://bosstwo420.pixnet.net/blog/post/220559147-%E3%80%8E%E6%BE%8E%E6%B9%96%E8%87%AA%E7%94%B1%E8%A1%8C%E3%80%8F%E6%BE%8E%E6%B9%96%E6%99%AF%E9%BB%9E%E6%8E%A8%E8%96%A6%EF%BD%9E%E5%BF%85%E5%90%83%E7%BE%8E%E9%A3%9F%EF%BD%9E%E5%A4%A7 9 | 10 | try: 11 | # Installed via pip install 12 | try: 13 | from .ArticutAPI import Articut 14 | except: 15 | from ArticutAPI import Articut 16 | except: 17 | # Installed via git clone 18 | import sys 19 | sys.path.append("../..") 20 | from ArticutAPI import Articut 21 | 22 | import json 23 | from pprint import pprint 24 | 25 | if __name__ == "__main__": 26 | 27 | try: 28 | #使用自己的斷詞額度。 29 | with open("../../account.info", "r") as f: 30 | userDICT = json.loads(f.read()) 31 | username = userDICT["email"] 32 | apikey = userDICT["apikey"] 33 | atc = Articut(username=userDICT["email"], apikey=userDICT["apikey"]) 34 | except: 35 | #使用免費的斷詞額度。 36 | #實體化 Articut() 37 | atc = Articut() 38 | 39 | #載入 Demo 用的文字 40 | with open("./PengHu.txt", encoding="utf-8") as f: 41 | contentLIST = [l.replace("\n", "") for l in f.readlines()] 42 | 43 | resultLIST = [] 44 | for c in contentLIST: 45 | print("Processing:{}/{} >> {}".format(contentLIST.index(c)+1, len(contentLIST), c)) 46 | resultDICT = atc.parse(c, openDataPlaceAccessBOOL=True) 47 | locationLIST = atc.getLocationStemLIST(resultDICT) 48 | if locationLIST!=None: 49 | resultLIST.extend(locationLIST) 50 | else: 51 | pass 52 | 53 | print("DetectionResult:\n") 54 | pprint(resultLIST) 55 | with open("./LocationDetectionResultLIST.json", "w", encoding="utf-8") as f: 56 | json.dump(resultLIST, f, ensure_ascii=False) 57 | -------------------------------------------------------------------------------- /Demos/LocationDetection/PengHu.txt: -------------------------------------------------------------------------------- 1 | 嗨嗨!!這張地圖是不死兔這次到澎湖玩耍所記錄的景點與美食喔! 2 | 上面的名稱都是直接用GOOGLE地圖搜尋名稱就可以找到的地點~ 3 | 看地圖知道位置之後~就可以更輕鬆的安排行程~不怕繞遠路啦!! 4 | 歡迎有需要的朋友參考~~ 5 | … 6 | 如果要到市區玩~找不到停車位~其實可以先把車寄放在租車行這邊XD 7 | 因為博明租車的附近超多景點~徒步就能到!! 8 | 像是著名的老街天后宮與四眼井~只要一分鐘就能走到喔! 9 | 四眼井就是有四個口的井~ 10 | 四眼井是台灣澎湖縣最老的古井,位於馬公市中央老街的最北端,建立於明代初期(西元1592年),正式名稱為『四穴井』或『四孔井』。 11 | 四眼井其實只是一個大井,出水量多,為避免民眾取水時不慎跌落入井中,早年以六塊花崗石條覆蓋,並用紅磚砌緣;但先前整修時已經改為水泥粉刷,再用花崗石環收編。因此形成四個圓形的 12 | 現在這井已經沒有作用~開放給大家觀光拍照! 13 | 井的旁邊有一攤藥膳茶葉蛋也很有名~但那時太飽了就沒買來吃~~ 14 | 老街賣了很多特色小物~可以逛逛 15 | 走著走著就會接到天后宮 16 | 這裡供奉著媽祖~也是澎湖歷史最悠久的廟宇~在1604年就已經立廟了呢! 17 | 這裡"馬公"市就是以"媽宮"的諧音來命名的喔! 18 | 如果你是用餐時段到這~附近的這間馬路益燒肉飯~是很多觀光客推薦的美食! 19 | 裡面源源不絕的客源~但要注意它下午有休息時間~太早太晚都是吃不到的 20 | … 21 | 繼續走到附近還有一間馬公城隍廟,亦可稱媽宮城隍廟,是位於台灣澎湖縣馬公市內的古蹟廟宇,供奉城隍爺。 22 | 這裡被列為國家三級古蹟~ 23 | 這裡的廟宇大多不大~但是古色古香的~清幽又不失莊嚴感 24 | 城隍廟對面有一間在地人推薦的燒肉飯~ 25 | … 26 | 傍晚可以到觀音亭去看夕陽喔! 27 | 這裡還可以玩水玩沙~ 28 | 澎湖觀音亭,又稱馬公觀音亭,位於臺灣澎湖縣馬公市,乃澎湖一座極具代表性的觀音廟,也是澎湖縣首屈一指的古廟,廟前可遠眺西嶼,也是「西瀛勝境」所在。 29 | 入夜後廟前之虹橋點起七彩燈光,吸引遊人如織。 30 | 傍晚吹著海風~很涼快~~~ 31 | 隨著時間~天空開始出現不同的變化~~非常美麗!! 32 | 跑完以上行程應該已經過一天了吧~ 33 | … 34 | 民宿老闆推薦我們一定要吃鐘記燒餅~~ 35 | 這燒餅可以任意搭配內餡~而且餅皮吃起來有嚼勁~越吃越香! 36 | 敢吃內臟的朋友一定要吃這~北新橋牛雜湯! 37 | 他的牛雜湯其實很不雜~只有牛肚跟牛肉~但是湯頭非常鮮美~肉跟肚QQ的好好吃!! 38 | 煎餃也是大推的~很有古早味!! 39 | 接著就可以開車往北環一日遊囉!! 40 | 首先一定會經過這個澎湖必拍景點~~~澎湖跨海大橋!!! 41 | 超長一條的大橋~沿途兩側都是海景!! 42 | 跨海大橋旁有一間易家仙人掌冰店~可以來吃點小點心! 43 | … 44 | 過了跨海大橋~我們來到了二崁聚落 45 | 二崁聚落是國內第一個被保存的傳統聚落保存區~ 46 | 由於澎湖冬季東北季風強大因此建於低地,為閩南五落式古厝,門廳、客廳、後廳三落之間並皆以天井串連 47 | 口字型的傳統合院配置型態形成室內外動線縱橫交錯,大廳前之子孫巷並利用小拱門與鄰居連絡並具有逃生系統的防禦功能。 48 | 古厝以澎湖當地的咾咕石與玄武岩做為牆身,支撐屋頂結構,並有書畫彩繪、交祉陶、彩繪磁磚、泥塑的傳統建築裝飾,相當具有澎湖的傳統工藝之美 49 | 這裡有很有名的杏仁茶館~ 50 | 據說是連不愛喝杏仁茶的人一喝就會愛上的喔! 51 | 我本身不排斥杏仁茶~但我覺得它的味道真的很香醇~一點都沒有杏仁的那種腥味!好喝!! 52 | 還有一些名產可以買~吃吃喝喝逛逛~而且很好拍照喔! 53 | 我們在這裡殺了不少時間呢! 54 | 逛完二崁聚落~可以在往下去看大菓葉玄武岩 55 | 這裡真的超級美麗!! 56 | … 57 | 接著出發往西嶼燈塔看日落~ 58 | 路上小插曲~遇到一大群的羊~通通都出來放風~好可愛喔! 59 | 西嶼燈塔~又稱漁翁島燈塔~是台灣最古老的燈塔呢! 60 | 但是有管制時間~如果日落時間太晚就不能進去了(開放時間到下午六點止) 61 | … 62 | 住宿附近有一間很好吃的日本料理推薦給大家~菊楓食堂!! 63 | 有時候會公休~或賣完就關店~~最好是打電話問一下比較保險 64 | 這裡推薦每日限量的鐵炮壽司~是用澎湖新鮮的小管現燙現做的一整條~~很有趣!也很美味! 65 | 翡翠舞龍蝦是老闆推薦點的~果然很好吃!是用黃瓜切段~中間挖空灌入龍蝦沙拉~中間的芯有另外醃製 66 | 非常的入味好吃!!連不愛吃黃瓜的我也覺得很美味!! 67 | 咖哩豬排飯也是老闆推薦的~他們自己熬煮的咖哩~~果然非常濃郁呢!好吃好吃! 68 | 有機會一定要來吃吃看喔! 69 | 還有一天不死兔去了七美島一日遊~有機會在整理遊記跟大家分享囉^0^ 70 | 希望不死兔的遊記有給想去澎湖玩耍的朋友參考到喔! -------------------------------------------------------------------------------- /Demos/LocationDetection/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Demos/LocationDetection/__init__.py -------------------------------------------------------------------------------- /Demos/NER_Food/NER_Food.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | 5 | try: 6 | #Installed via pip install 7 | try: 8 | from .ArticutAPI import Articut 9 | except: 10 | from ArticutAPI import Articut 11 | except: 12 | #Installed via git clone 13 | import sys 14 | sys.path.append("../..") 15 | 16 | from pprint import pprint 17 | from ArticutAPI import Articut 18 | 19 | if __name__ == "__main__": 20 | username = "" #這裡填入您在 https://api.droidtown.co 使用的帳號 email。若使用空字串,則預設使用每小時 2000 字的公用額度。 21 | apikey = "" #這裡填入您在 https://api.droidtown.co 登入後取得的 api Key。若使用空字串,則預設使用每小時 2000 字的公用額度。 22 | articut = Articut(username, apikey) 23 | demoSTR = """美食商圈內高人氣四川牛肉麵專賣店選用大量的台灣洋蔥、 24 | 義大利番茄熬煮的自然酸甜牛肉湯底。加入大塊又有咬勁的牛肉塊, 25 | 特選訂製的Q彈拉麵條。日式拉麵完全吸附湯汁的精華,加入德國酸菜、牛油、辣油後更加美味 26 | 法式焗烤龍蝦和蕃茄牛肉炒飯還有法式起司火鍋以及五味章魚很夠味,章魚也不硬,搭配的小黃瓜很甜很好吃。魚蛋沙拉偶爾會點""".replace("\n", "") 27 | resultDICT = articut.parse(demoSTR) 28 | 29 | #只取出 [食物名稱] 30 | foodLIST = articut.NER.getFood(resultDICT, indexWithPOS=False) 31 | pprint(foodLIST) 32 | 33 | #取出 [地方風格]+[食物名稱] 34 | locFoodLIST = articut.NER.getFood(resultDICT, withLocation=True , indexWithPOS=False) 35 | pprint(locFoodLIST) -------------------------------------------------------------------------------- /Demos/NER_Food/ReadMe.md: -------------------------------------------------------------------------------- 1 | # NER (命名實體辨識) 工具:美食篇 2 | 3 | NE (命名實體,也就是叫得出名字的「東西」),有時候會是兩個詞、三個詞甚至多個詞構成。比如說「台北市立體育館」就至少是由「台北/市立/體育館」等三個詞彙構成的一個實體。這對 NLP 任務而言,困難的地方就在決定「哪些相鄰的詞,可以構成一個命名實體?」 4 | 5 | 還好,這個問題對 Articut 而言並不困難,因此我們多做了 ArticutAPI 的 NER 工具包!目前已經先行完成了「美食辨識」了! 6 | 7 | 先做美食的原因,是因為現代 NLP 有許多工作是在分析評價內文。而最常出現評價的地方,就是餐廳食物的評論了。如果沒有做好 NER 的話,像以下的例子: 8 | 9 | ![兩個詞彙構成一個美食命名實體](https://www.droidtown.co/static/public_img/2word_cuisine.png) 10 | 11 | 兩個詞彙還不算太複雜的,何況兩個都是可能的食材時。在中文裡,我們也很常見到三個詞彙構成的美食命名實體,而且這三個詞彙的意義還不太相同: 12 | 13 | ![三個詞彙構成一個美食命名實體](https://www.droidtown.co/static/public_img/3word_cuisine.png) 14 | 15 | 三個詞彙裡,有一個表示地方風格,名詞做為形容詞用,另一個做為烹煮方法的動詞,還有一個才是食材。 16 | 17 | 過去有許多利用統計機率模型或是機器學習模型的研究論文,在這裡,我們直接利用 ArticutAPI 的 NER 工具包就可以了。它有兩個選項,一方面可以擷取出「只有食物名稱」的命名實體,另一方面,也可以擷取出「有地方風格詞彙 + 食物名稱」的命名實體。示範如下: 18 | 19 | ```python 20 | from ArticutAPI import Articut 21 | 22 | username = "" #這裡填入您在 https://api.droidtown.co 使用的帳號 email。若使用空字串,則預設使用每小時 2000 字的公用額度。 23 | apikey = "" #這裡填入您在 https://api.droidtown.co 登入後取得的 api Key。若使用空字串,則預設使用每小時 2000 字的公用額度。 24 | articut = Articut(username, apikey) 25 | 26 | inputSTR = "今天晚上特別點了一道法式焗烤龍蝦來慶祝疫情結束!" 27 | resultDICT = articut.parse(inputSTR) 28 | 29 | foodLIST = articut.NER.getFood(resultDICT) 30 | #如此一來就能取得 [焗烤龍蝦] 的美食名稱命名實體了 31 | 32 | foodLocLIST = articut.NER.getFood(resultDICT, withLocation=True) 33 | #如此一來,就能取得 [法式焗烤龍蝦] 的這樣既含有地方風格詞彙,又有美食名稱的命名實體囉! 34 | ``` 35 | 36 | 以圖表示如下: 37 | 38 | ![美食命名實體](https://www.droidtown.co/static/public_img/NER.getFood.png) 39 | 40 | 只取出 [牛肉麵],因為預設是不計入美食詞彙前的地方特色詞彙。如果要加入地方詞彙特色,請把參數調整為 True: 41 | 42 | ![地方風格 + 美食命名實體](https://www.droidtown.co/static/public_img/NER.getFoodLoc.png) 43 | 44 | 就這樣。透過 ArticutAPI 的 NER 工具,就能輕鬆地取出文本中的美食命名實體囉! 45 | -------------------------------------------------------------------------------- /Demos/NovelAnalysis/ReadMe.md: -------------------------------------------------------------------------------- 1 | # 三國演義:誰都幹了哪些事兒? 2 | 3 | 金庸先生的笑傲江湖裡有一段是這樣的… 4 | 5 | ``` 6 | 林平之叫道:『我爹娘是給青城派余滄海與木高峰害死的,跟我師父有甚么相干?我是堂堂華山派門徒,豈能臨到危難,便貪生怕死?』 7 | 8 | 梁發叫道:『說得好!我華山派……』一個蒙面人喝道:『你華山派便怎樣?』橫揮一刀,將梁發的腦袋砍了下來,鮮血直噴。」 9 | ``` 10 | 11 | 這不禁讓人思考起「梁發」這個角色,除了「叫道」以外,究竟有沒有做過別的事呢?還是說…這個角色在故事裡就只做了「叫道」這件事呢? 12 | 13 | 類似的角色,梁發不是第一位。在三國演義裡,也有這麼一位「潘鳳」將軍。故事是這樣的… 14 | 15 | ``` 16 | 太守韓馥曰:「吾有上將潘鳳,可斬華雄。」紹急令出戰。潘鳳手提大斧上馬。去不多時,飛馬來報:「潘鳳又被華雄斬了。」 17 | ``` 18 | 是的,潘鳳只做了兩件事「提」和「上馬」,然後他就死掉了! 19 | 20 | 這下可引起我的興趣了!在三國演義裡,每個人究竟出場了幾次,出場的時候又都做了哪些事呢? 21 | 22 | 想瞭解這個問題,利用 Articut 就對了! 23 | 24 | ArticutAPI 的回傳結果裡,有三種格式。 25 | #### 第一種是帶著詞性標記的 **`result_pos`**: 26 | ``` 27 | ['趙雲聽了', ',', '追尋... 28 | ``` 29 | #### 第二種是單純用斜線把詞彙切開的 **`result_segmentation`**: 30 | ``` 31 | '趙雲/聽了/,/連/忙/追尋/... 32 | ``` 33 | #### 最後一種,就是今天的主角:把每個詞彙當成一個物件的 **`result_obj`** 了! 34 | ``` 35 | [{'text': '趙雲', 'pos': 'UserDefined'}, {'text': '聽了', 'pos': 'VerbP'}], [{'text': ',', 'pos': 'PUNCTUATION'}], [{'text': '連', 'pos': 'FUNC_inner'}, {'text': '忙', 'pos': 'ACTION_verb'}, {'text': '追尋', 'pos': 'ACTION_verb'}] 36 | ``` 37 | 本次的 Demo 程式,就是利用 **`result_obj`** 配合在 [Public_UserDefinedDict](https://github.com/Droidtown/ArticutAPI/blob/master/Public_UserDefinedDict/KNOWLEDGE_%E4%B8%89%E5%9C%8B%E4%BA%BA%E7%89%A9.json) 裡釋出的「三國人物字典」來操作。 38 | 39 | ![Demo Text](https://64.media.tumblr.com/fc61f3ff32828d9e12883a8ae2482989/f488dd2c76f7c846-0f/s500x750/ca8f5b98619781663e05eeaf9401b18e6b66ccbb.png) 40 | 41 | 程式目標是把「趙雲」以及在「同一句裡出現趙雲以及他做的動作」擷取出來。 42 | 43 | 程式分成兩大區塊。第一個區塊先把三國演義中常常使用的「用名字的一個字,來指稱前面提過的某人」 ,利用三國人物字典將它還原成「全名」。例如以「雲」表示剛剛提過的「趙雲」,用「琮」代指前文裡的「劉琮」…等等的「雲」和「琮」就要被還原成「趙雲」和「劉琮」。 44 | 45 | 第二個區塊,則是計算「在這個人名出現後,下一個名詞出現前。他究竟做過哪些動作」。動作在 Articut 的標記系統裡只有三種,一是 ACTION_verb,一是 ACTION_quantifiedVerb 以及 VerbP。 46 | 47 | 兩個區塊都做完以後,就直接利用 append 加入一個字典中的列表裡做為輸出結果囉。 48 | -------------------------------------------------------------------------------- /Demos/NovelAnalysis/novel_analysis.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | import os 5 | import re 6 | 7 | try: 8 | # Installed via pip install 9 | try: 10 | from .ArticutAPI import Articut 11 | except: 12 | from ArticutAPI import Articut 13 | except: 14 | # Installed via git clone 15 | import sys 16 | sys.path.append("../..") 17 | from ArticutAPI import Articut 18 | 19 | 20 | #username 和 apikey 留空的話,就只有每小時 2000 字的公用額度可以玩囉。 21 | username = "" 22 | apikey = "" 23 | articut = Articut(username=username, apikey=apikey) 24 | 25 | userDefinedDictFILE = "./KNOWLEDGE_三國人物.json" 26 | if os.path.exists(userDefinedDictFILE): 27 | pass 28 | else: 29 | raise IOError("請到 https://github.com/Droidtown/ArticutAPI/blob/master/Public_UserDefinedDict/ 下載 KNOWLEDGE_三國人物.json 字典檔配合使用。") 30 | 31 | #取出所有依字典被標為人名的字串 32 | UserDefinedPat = re.compile("[^<]*?") 33 | #取出所有只有「一個字符」,可能是人名的字串 34 | possibleAliasPosTUPL = ("ENTITY_nounHead", "ENTITY_nouny", "ENTITY_noun", "ENTITY_oov", "ACTION_verb", "MODIFIER") 35 | 36 | def main(inputSTR): 37 | articutResultDICT = articut.parse(inputSTR, userDefinedDictFILE="./KNOWLEDGE_三國人物.json") 38 | print(articutResultDICT) 39 | resultDICT = {} 40 | #取出這段文字裡所有被列在「三國人物.json」裡的人名,並加到 resultDICT 裡做為 key 41 | possibleAliasDICT = {} 42 | for posSentenceDICT in articutResultDICT["result_obj"]: 43 | if posSentenceDICT[0]["pos"] == "PUNCTUATION": 44 | pass 45 | else: 46 | for ud in posSentenceDICT: 47 | if ud["pos"] == "UserDefined": 48 | resultDICT[ud["text"]] = [] 49 | possibleAliasDICT[ud["text"][-1]] = ud["text"] 50 | if ud["pos"] in possibleAliasPosTUPL and len(ud["text"]) == 1 and ud["text"] in possibleAliasDICT.keys(): 51 | ud["pos"] = "UserDefined" 52 | ud["text"] = possibleAliasDICT[ud["text"]] #這行示範把「雲」取代成「趙雲」 53 | 54 | #若要把「夫人」或是「妾」取代成「糜夫人」,可仿照前述的方式,在這裡處理。 55 | 56 | #真正開始抽取資訊的段落 57 | for i in range(len(articutResultDICT["result_obj"])): 58 | if articutResultDICT["result_obj"][i][0]["pos"] == "PUNCTUATION": 59 | pass 60 | else: 61 | for ud in articutResultDICT["result_obj"][i]: 62 | if ud["pos"] == "UserDefined": 63 | focusPerson = ud["text"] 64 | if ud["pos"] in ("ACTION_verb", "ACTION_quantifiedVerb", "VerbP"): 65 | if focusPerson != None: 66 | resultDICT[focusPerson].append(ud["text"]) 67 | else: 68 | pass 69 | elif "ENTITY" in ud["pos"]: 70 | focusPerson = None 71 | else: 72 | pass 73 | 74 | 75 | return resultDICT #回傳結果範例 {"趙雲": ["伏地", "拍馬"], "糜夫人": ["投井"]} 76 | 77 | 78 | if __name__== "__main__": 79 | 80 | inputSTR = """趙雲聽了,連忙追尋。只見一個人家,被火燒壞土牆,糜夫人抱著阿斗,坐於牆下枯井之傍啼哭。 81 | 雲急下馬伏地而拜。夫人曰:「妾得見將軍,阿斗有命矣。望將軍可憐他父親飄蕩半世,只有這點骨血。 82 | 將軍可護持此子,教他得見父面,妾死無恨!」""" 83 | 84 | resultDICT = main(inputSTR) 85 | print(resultDICT) 86 | 87 | 88 | -------------------------------------------------------------------------------- /Demos/PlaceDetection/PengHu.txt: -------------------------------------------------------------------------------- 1 | 嗨嗨!!這張地圖是不死兔這次到澎湖玩耍所記錄的景點與美食喔! 2 | 上面的名稱都是直接用GOOGLE地圖搜尋名稱就可以找到的地點~ 3 | 看地圖知道位置之後~就可以更輕鬆的安排行程~不怕繞遠路啦!! 4 | 歡迎有需要的朋友參考~~ 5 | … 6 | 如果要到市區玩~找不到停車位~其實可以先把車寄放在租車行這邊XD 7 | 因為博明租車的附近超多景點~徒步就能到!! 8 | 像是著名的老街天后宮與四眼井~只要一分鐘就能走到喔! 9 | 四眼井就是有四個口的井~ 10 | 四眼井是台灣澎湖縣最老的古井,位於馬公市中央老街的最北端,建立於明代初期(西元1592年),正式名稱為『四穴井』或『四孔井』。 11 | 四眼井其實只是一個大井,出水量多,為避免民眾取水時不慎跌落入井中,早年以六塊花崗石條覆蓋,並用紅磚砌緣;但先前整修時已經改為水泥粉刷,再用花崗石環收編。因此形成四個圓形的 12 | 現在這井已經沒有作用~開放給大家觀光拍照! 13 | 井的旁邊有一攤藥膳茶葉蛋也很有名~但那時太飽了就沒買來吃~~ 14 | 老街賣了很多特色小物~可以逛逛 15 | 走著走著就會接到天后宮 16 | 這裡供奉著媽祖~也是澎湖歷史最悠久的廟宇~在1604年就已經立廟了呢! 17 | 這裡"馬公"市就是以"媽宮"的諧音來命名的喔! 18 | 如果你是用餐時段到這~附近的這間馬路益燒肉飯~是很多觀光客推薦的美食! 19 | 裡面源源不絕的客源~但要注意它下午有休息時間~太早太晚都是吃不到的 20 | … 21 | 繼續走到附近還有一間馬公城隍廟,亦可稱媽宮城隍廟,是位於台灣澎湖縣馬公市內的古蹟廟宇,供奉城隍爺。 22 | 這裡被列為國家三級古蹟~ 23 | 這裡的廟宇大多不大~但是古色古香的~清幽又不失莊嚴感 24 | 城隍廟對面有一間在地人推薦的燒肉飯~ 25 | … 26 | 傍晚可以到觀音亭去看夕陽喔! 27 | 這裡還可以玩水玩沙~ 28 | 澎湖觀音亭,又稱馬公觀音亭,位於臺灣澎湖縣馬公市,乃澎湖一座極具代表性的觀音廟,也是澎湖縣首屈一指的古廟,廟前可遠眺西嶼,也是「西瀛勝境」所在。 29 | 入夜後廟前之虹橋點起七彩燈光,吸引遊人如織。 30 | 傍晚吹著海風~很涼快~~~ 31 | 隨著時間~天空開始出現不同的變化~~非常美麗!! 32 | 跑完以上行程應該已經過一天了吧~ 33 | … 34 | 民宿老闆推薦我們一定要吃鐘記燒餅~~ 35 | 這燒餅可以任意搭配內餡~而且餅皮吃起來有嚼勁~越吃越香! 36 | 敢吃內臟的朋友一定要吃這~北新橋牛雜湯! 37 | 他的牛雜湯其實很不雜~只有牛肚跟牛肉~但是湯頭非常鮮美~肉跟肚QQ的好好吃!! 38 | 煎餃也是大推的~很有古早味!! 39 | 接著就可以開車往北環一日遊囉!! 40 | 首先一定會經過這個澎湖必拍景點~~~澎湖跨海大橋!!! 41 | 超長一條的大橋~沿途兩側都是海景!! 42 | 跨海大橋旁有一間易家仙人掌冰店~可以來吃點小點心! 43 | … 44 | 過了跨海大橋~我們來到了二崁聚落 45 | 二崁聚落是國內第一個被保存的傳統聚落保存區~ 46 | 由於澎湖冬季東北季風強大因此建於低地,為閩南五落式古厝,門廳、客廳、後廳三落之間並皆以天井串連 47 | 口字型的傳統合院配置型態形成室內外動線縱橫交錯,大廳前之子孫巷並利用小拱門與鄰居連絡並具有逃生系統的防禦功能。 48 | 古厝以澎湖當地的咾咕石與玄武岩做為牆身,支撐屋頂結構,並有書畫彩繪、交祉陶、彩繪磁磚、泥塑的傳統建築裝飾,相當具有澎湖的傳統工藝之美 49 | 這裡有很有名的杏仁茶館~ 50 | 據說是連不愛喝杏仁茶的人一喝就會愛上的喔! 51 | 我本身不排斥杏仁茶~但我覺得它的味道真的很香醇~一點都沒有杏仁的那種腥味!好喝!! 52 | 還有一些名產可以買~吃吃喝喝逛逛~而且很好拍照喔! 53 | 我們在這裡殺了不少時間呢! 54 | 逛完二崁聚落~可以在往下去看大菓葉玄武岩 55 | 這裡真的超級美麗!! 56 | … 57 | 接著出發往西嶼燈塔看日落~ 58 | 路上小插曲~遇到一大群的羊~通通都出來放風~好可愛喔! 59 | 西嶼燈塔~又稱漁翁島燈塔~是台灣最古老的燈塔呢! 60 | 但是有管制時間~如果日落時間太晚就不能進去了(開放時間到下午六點止) 61 | … 62 | 住宿附近有一間很好吃的日本料理推薦給大家~菊楓食堂!! 63 | 有時候會公休~或賣完就關店~~最好是打電話問一下比較保險 64 | 這裡推薦每日限量的鐵炮壽司~是用澎湖新鮮的小管現燙現做的一整條~~很有趣!也很美味! 65 | 翡翠舞龍蝦是老闆推薦點的~果然很好吃!是用黃瓜切段~中間挖空灌入龍蝦沙拉~中間的芯有另外醃製 66 | 非常的入味好吃!!連不愛吃黃瓜的我也覺得很美味!! 67 | 咖哩豬排飯也是老闆推薦的~他們自己熬煮的咖哩~~果然非常濃郁呢!好吃好吃! 68 | 有機會一定要來吃吃看喔! 69 | 還有一天不死兔去了七美島一日遊~有機會在整理遊記跟大家分享囉^0^ 70 | 希望不死兔的遊記有給想去澎湖玩耍的朋友參考到喔! -------------------------------------------------------------------------------- /Demos/PlaceDetection/PlaceDemo.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # FileName: PlaceDemo.py 4 | # Developer: Peter. w (peterwolf.wang@gmail.com) 5 | 6 | 7 | #Sample Text "PengHu.txt" Source: 8 | #https://bosstwo420.pixnet.net/blog/post/220559147-%E3%80%8E%E6%BE%8E%E6%B9%96%E8%87%AA%E7%94%B1%E8%A1%8C%E3%80%8F%E6%BE%8E%E6%B9%96%E6%99%AF%E9%BB%9E%E6%8E%A8%E8%96%A6%EF%BD%9E%E5%BF%85%E5%90%83%E7%BE%8E%E9%A3%9F%EF%BD%9E%E5%A4%A7 9 | 10 | try: 11 | # Installed via pip install 12 | try: 13 | from .ArticutAPI import Articut 14 | except: 15 | from ArticutAPI import Articut 16 | except: 17 | # Installed via git clone 18 | import sys 19 | sys.path.append("../..") 20 | from ArticutAPI import Articut 21 | 22 | import json 23 | from pprint import pprint 24 | 25 | if __name__ == "__main__": 26 | 27 | try: 28 | #使用自己的斷詞額度。 29 | with open("../../account.info", "r") as f: 30 | userDICT = json.loads(f.read()) 31 | username = userDICT["email"] 32 | apikey = userDICT["apikey"] 33 | atc = Articut(username=userDICT["email"], apikey=userDICT["apikey"]) 34 | except: 35 | #使用免費的斷詞額度。 36 | #實體化 Articut() 37 | atc = Articut() 38 | 39 | #載入 Demo 用的文字 40 | with open("./PengHu.txt", encoding="utf-8") as f: 41 | contentLIST = [l.replace("\n", "") for l in f.readlines()] 42 | 43 | #呼叫 parse() ,把 "openDataPlaceAccessBOOL" 參數設為 True,並把回傳的結果交給 getOpenDataPlaceLIST() 處理。 44 | resultLIST = [] 45 | for c in contentLIST: 46 | print("Processing:{}/{} >> {}".format(contentLIST.index(c)+1, len(contentLIST), c)) 47 | resultDICT = atc.parse(c, openDataPlaceAccessBOOL=True) 48 | placeLIST = atc.getOpenDataPlaceLIST(resultDICT) 49 | placeLIST.sort() 50 | if placeLIST!=None: 51 | resultLIST.extend(placeLIST) 52 | else: 53 | pass 54 | 55 | #在畫面上顯示結果,並將結果存入 PlaceDetectionResultLIST.json 檔中。 56 | print("DetectionResult:\n") 57 | pprint(resultLIST) 58 | with open("./PlaceDetectionResultLIST.json", "w", encoding="utf-8") as f: 59 | json.dump(resultLIST, f, ensure_ascii=False) 60 | -------------------------------------------------------------------------------- /Demos/Preprocessing/comma.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | from ArticutAPI import Articut 5 | import re 6 | 7 | articut = Articut() 8 | 9 | def commaPreprocessor(inputSTR, refLIST): 10 | if "、" in inputSTR: 11 | pass 12 | else: 13 | return inputSTR 14 | 15 | ignoreVerbLIST = [] 16 | for r in refLIST: 17 | rDICT = articut.parse(r) 18 | verbLIST = articut.getVerbStemLIST(rDICT) 19 | for v in verbLIST: 20 | if v == []: #標點符號,或是沒有動詞的句子 21 | pass 22 | else: #有動詞的句子,動詞列表成 [(startIndex, endIndex, word)] 格式 23 | for i in v: 24 | ignoreVerbLIST.append(i[2]) 25 | 26 | resultDICT = articut.parse(inputSTR) 27 | #取出第一個「頓號」前一句 index。通常主要動詞在其中。 28 | refIndexLIST = [] 29 | for i in range(1, len(resultDICT["result_pos"])): #從 1 開始算,以免 inputSTR 是「、」開頭的字串片段。 30 | if resultDICT["result_pos"][i] == "、": 31 | refIndexLIST.append(i-1) 32 | break 33 | #依前述的 refIndex 取出主要動詞 34 | for refIndex in refIndexLIST: 35 | verb2DistSTR = "" 36 | verbPat = re.compile("(?<=)[^<]{2,3}(?=)") #取二字詞或三字詞,避免誤抓了「看、聽、說、講、想」…等一字詞的動詞。 37 | try: #有可能前一句就是沒有合適的動詞,那麼就不適用這個前處理方法。 38 | verb2DistSTR = [v for v in verbPat.findall(resultDICT["result_pos"][refIndex]) if v not in ignoreVerbLIST][0] 39 | except: 40 | break 41 | 42 | for i in range(1, len(resultDICT["result_pos"])): #把抓出的動詞補回去。但如果遇到斷句的「,。!?」時,就停止補動詞。 43 | if resultDICT["result_pos"][i] == "、": 44 | resultDICT["result_pos"][i] = resultDICT["result_pos"][i] + verb2DistSTR 45 | elif resultDICT["result_pos"][i] in ",。!?": 46 | break 47 | 48 | resultSTR = re.sub("", "", "".join(resultDICT["result_pos"])) 49 | 50 | return resultSTR 51 | 52 | 53 | if __name__ == "__main__": 54 | refLIST = ["網頁設計"] 55 | 56 | inputSTR = "應徵UX 網頁設計、網頁設計師、網站維護等職缺,熟悉HTML5、CSS3、Photoshop、Illustractor、JavaScript、JQuery。" 57 | #先用 re.split 把字串分切成「句子」。這裡不處理「、」的原因是 commaPreprocessor() 就是用來處理「、」的,所以我們把它留著。 58 | inputLIST = re.split("[,。!?]", inputSTR) 59 | 60 | #把前一步切開的字串,送入 commaPreprocessor() 裡處理。 61 | for i in inputLIST: 62 | resultSTR = commaPreprocessor(i, refLIST) 63 | print(resultSTR) -------------------------------------------------------------------------------- /Demos/PrimarySchoolMath/Example.txt: -------------------------------------------------------------------------------- 1 | Definition: 2 | 雞蛋有40顆 3 | 有雞蛋40顆 4 | 有40顆雞蛋 5 | 冰箱裡有40顆雞蛋 6 | 冰箱裡有雞蛋40顆 7 | 冰箱裡原有雞蛋40顆 8 | 冰箱裡原有40顆雞蛋 9 | 冰箱裡原有40顆雞蛋 10 | 11 | Calculation: 12 | 買了10顆雞蛋 13 | 買了雞蛋10顆 14 | 媽媽買了10顆雞蛋 15 | 媽媽買了雞蛋10顆 16 | 媽媽今天買了10顆雞蛋 17 | 今天媽媽買了10顆雞蛋 18 | 19 | Question: 20 | 有幾顆雞蛋 21 | 雞蛋有幾顆 22 | 現在有幾顆雞蛋 23 | 現在還有幾顆雞蛋 24 | 現在雞蛋有幾顆 25 | 現在雞蛋還有幾顆 26 | 現在有多少顆雞蛋 27 | 現在還有多少顆雞蛋 28 | 現在剩下幾顆雞蛋 29 | 現在還剩下幾顆雞蛋 30 | 現在剩下多少顆雞蛋 31 | 現在還剩下多少顆雞蛋 32 | -------------------------------------------------------------------------------- /Demos/PrimarySchoolMath/PSMath01.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | """ 5 | Loki Template For Python3 6 | 7 | Request: 8 | { 9 | "username": "your_username", 10 | "input_str": "your_input", 11 | "loki_key": "your_loki_key" 12 | } 13 | 14 | Response: 15 | { 16 | "status": True, 17 | "msg": "Success!", 18 | "version": "v193", 19 | "word_count_balance": 2000, 20 | "results": [ 21 | { 22 | "intent": "intentName", 23 | "pattern": "matchPattern", 24 | "utterance": "matchUtterance", 25 | "argument": ["arg1", "arg2", ... "argN"] 26 | }, 27 | ... 28 | ] 29 | } 30 | """ 31 | 32 | import json 33 | import os 34 | import re 35 | import requests 36 | from intent import Loki_Question 37 | from intent import Loki_Calculation_Comparison 38 | from intent import Loki_Calculation_Addition 39 | from intent import Loki_Definition 40 | from pprint import pprint 41 | 42 | try: 43 | infoPath = "{}/account.info".format(os.path.dirname(os.path.abspath(__file__))) 44 | infoDICT = json.load(open(infoPath, "r")) 45 | USERNAME = infoDICT["username"] 46 | API_KEY = infoDICT["api_key"] 47 | LOKI_KEY = infoDICT["loki_key"] 48 | except: 49 | # HINT: 在這裡填入您在 https://api.droidtown.co 的帳號、Articut 的 API_Key 以及 Loki 專案的 Loki_Key 50 | USERNAME = "" 51 | API_KEY = "" 52 | LOKI_KEY = "" 53 | 54 | class LokiResult(): 55 | status = False 56 | message = "" 57 | version = "" 58 | balance = -1 59 | lokiResultLIST = None 60 | 61 | def __init__(self, input_str): 62 | self.status = False 63 | self.message = "" 64 | self.version = "" 65 | self.balance = -1 66 | self.lokiResultLIST = None 67 | 68 | try: 69 | result = requests.post("https://api.droidtown.co/Loki/API/", json={ 70 | "username": USERNAME, 71 | "input_str": input_str, 72 | "loki_key": LOKI_KEY 73 | }) 74 | 75 | if result.status_code == requests.codes.ok: 76 | result = result.json() 77 | self.status = result["status"] 78 | self.message = result["msg"] 79 | if result["status"]: 80 | self.version = result["version"] 81 | self.balance = result["word_count_balance"] 82 | self.lokiResultLIST = result["results"] 83 | else: 84 | self.message = "Connect Error." 85 | except Exception as e: 86 | self.message = str(e) 87 | 88 | def getStatus(self): 89 | return self.status 90 | 91 | def getMessage(self): 92 | return self.message 93 | 94 | def getVersion(self): 95 | return self.version 96 | 97 | def getBalance(self): 98 | return self.balance 99 | 100 | def getLen(self): 101 | rst = 0 102 | if self.lokiResultLIST is not None: 103 | rst = len(self.lokiResultLIST) 104 | 105 | return rst 106 | 107 | def getLokiResult(self, index): 108 | lokiResultDICT = None 109 | if self.lokiResultLIST is not None: 110 | if index < self.getLen(): 111 | lokiResultDICT = self.lokiResultLIST[index] 112 | 113 | return lokiResultDICT 114 | 115 | def getIntent(self, index): 116 | rst = "" 117 | lokiResultDICT = self.getLokiResult(index) 118 | if lokiResultDICT is not None: 119 | rst = lokiResultDICT["intent"] 120 | 121 | return rst 122 | 123 | def getPattern(self, index): 124 | rst = "" 125 | lokiResultDICT = self.getLokiResult(index) 126 | if lokiResultDICT is not None: 127 | rst = lokiResultDICT["pattern"] 128 | 129 | return rst 130 | 131 | def getUtterance(self, index): 132 | rst = "" 133 | lokiResultDICT = self.getLokiResult(index) 134 | if lokiResultDICT is not None: 135 | rst = lokiResultDICT["utterance"] 136 | 137 | return rst 138 | 139 | def getArgs(self, index): 140 | rst = [] 141 | lokiResultDICT = self.getLokiResult(index) 142 | if lokiResultDICT is not None: 143 | rst = lokiResultDICT["argument"] 144 | 145 | return rst 146 | 147 | ############################################################################################### 148 | punctuationPat = re.compile("[,。;,;?]") 149 | 150 | def runLoki(inputSTR): 151 | questionDICT = {"Definition": {}, 152 | "Calculation": {}, 153 | "Entity": {}, 154 | "Memory": {}, 155 | "Process": [], 156 | "Question": []} 157 | 158 | inputLIST = list(filter(None, punctuationPat.sub("\n", inputSTR).split("\n"))) 159 | print("[Input_list]\n{}\n".format(inputLIST)) 160 | 161 | for u in inputLIST: 162 | lokiRst = LokiResult(u) 163 | if lokiRst.getStatus(): 164 | # HINT: 以下這些 lokiRst.getResult(i) 都是在 Loki 的網頁中自動幫你生成的。 165 | # 每個 lokiRst.getPattern(i) 的上方還會出現一行「註解起來」的中文句子。那是用來 166 | # 表示那段正規表示式是在描述哪一種句型。比如說『剩下幾[個]』這段,就在表示其後的正規 167 | # 表示式是用來抓「剩下幾個」中的「個」。 168 | for i in range(0, lokiRst.getLen()): 169 | # Question 170 | if lokiRst.getIntent(i) == "Question": 171 | questionDICT = Loki_Question.getResult(lokiRst.getPattern(i), lokiRst.getUtterance(i), lokiRst.getArgs(i), u, questionDICT) 172 | 173 | # Calculation_Comparison 174 | if lokiRst.getIntent(i) == "Calculation_Comparison": 175 | questionDICT = Loki_Calculation_Comparison.getResult(lokiRst.getPattern(i), lokiRst.getUtterance(i), lokiRst.getArgs(i), u, questionDICT) 176 | 177 | # Calculation_Addition 178 | if lokiRst.getIntent(i) == "Calculation_Addition": 179 | questionDICT = Loki_Calculation_Addition.getResult(lokiRst.getPattern(i), lokiRst.getUtterance(i), lokiRst.getArgs(i), u, questionDICT) 180 | 181 | # Definition 182 | if lokiRst.getIntent(i) == "Definition": 183 | questionDICT = Loki_Definition.getResult(lokiRst.getPattern(i), lokiRst.getUtterance(i), lokiRst.getArgs(i), u, questionDICT) 184 | 185 | else: 186 | pass 187 | #questionDICT = {"msg": lokiRst.getMessage()} 188 | 189 | return questionDICT 190 | 191 | if __name__ == "__main__": 192 | # HINT: 測試段落。 193 | input_str = "學校買來38個排球,一班借走了10個,學校還剩下多少個?" 194 | resultDICT = runLoki(input_str) 195 | print("Result ===>") 196 | pprint(resultDICT) -------------------------------------------------------------------------------- /Demos/StockNews/HeadlineReader.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | try: 5 | # Installed via pip install 6 | try: 7 | from .ArticutAPI import Articut 8 | except: 9 | from ArticutAPI import Articut 10 | except: 11 | # Installed via git clone 12 | import sys 13 | sys.path.append("../..") 14 | from ArticutAPI import Articut 15 | 16 | from pprint import pprint 17 | import json 18 | 19 | if __name__ == "__main__": 20 | 21 | try: 22 | #使用自己的斷詞額度。 23 | with open("../../account.info", "r") as f: 24 | userDICT = json.loads(f.read()) 25 | username = userDICT["email"] 26 | apikey = userDICT["apikey"] 27 | atc = Articut(username=userDICT["email"], apikey=userDICT["apikey"]) 28 | except: 29 | #使用公用的斷詞額度。(每小時 2000 字) 30 | atc = Articut() 31 | 32 | downSample = '''台指選擇權盤後-年線保衛戰失利 外資續賣台股 33 | 台股期權盤後-華為拖累電子 台股摔破支撐 34 | 華為風暴持續擴大 三王領跌重挫148點 創波段新低 35 | 華為風暴 大跌退守10300點 36 | 美商禁令聲聲催,台股電子三王大跌,指數再破年線 37 | 跌148.85點 38 | 華為風暴擴大 一度破10300點 39 | 外資狂撤,台股欲振乏力 40 | 利空燒不盡,台股挫百點失年線 41 | 華為風暴!台股摜破前低,將往半年線測試 42 | 電子股恐慌殺盤出籠,可成慘破200元大關 43 | 貿易戰演變成科技戰 電子權值股成壓力蓋 44 | 華為風暴嚇趴!台積電狂殺3%,台股重挫逾140點 45 | 台股開盤10404點,跌53.22點 46 | 續跌危機未除 恐尋求半年線支撐 47 | 美中貿易戰延燒 牽動台股後市 48 | 不要亂猜底,小心被連環套 49 | 電子雙王獨撐 台股上檔遇壓收黑小跌( 50 | 年線持續下彎 台股技術面仍看空 51 | 新台幣貶不停 外資猛落跑 小心年線岌岌可危 52 | 中華電不賣華為新機;新台幣貶破31.5元 53 | 美擬封殺海康,安控股飆;聯茂、華通5G題材發酵 54 | 晶片事業重傷!安謀加入封殺華為 55 | 22日自營商、外資賣超4.32億元、111.21億元 56 | 外資賣壓不止,台股走勢偏空 57 | 上遇年線壓力 台股量縮整理 58 | 台股欲振乏力,三大法人賣超107.39億元 59 | 5/22集中市場三大法人合計賣超107.40億元 60 | 台積電獨木難撐,台股隨陸股衰尾 61 | 台積電帶著大立光小反彈 無助大盤光彩反攻 62 | 美國接連對中國出招,台股追價力不強,量縮收黑 63 | 短線反彈後,恐再下殺 64 | 今年高點已過 65 | 上市櫃企業Q1獲利年減近2成,4公司財報續難產 66 | 宏達電Q3營收 估衰退27~35%''' 67 | 68 | riseSample = '''KD低檔黃金交叉,有利戰季線 69 | 台股量縮回穩,反彈契機不遠 70 | 台積賣超停止日,台股止跌時 71 | 台商回台投資將達5,500億,千載難逢的機會 72 | 貿易談判空窗,台股有望醞釀反彈 73 | 台積電強漲 大盤一度突破10500點 74 | 台積回神,反攻10500點 75 | 美給華為寬限期90天,台系華為供應鏈鬆口氣 76 | 台股開盤10481.1點,漲16.6點 77 | 金融傳產發威 台股破低後強彈收復年線 78 | 澳洲央行6月考慮降息;新興市場短空長多 79 | 上季GDP成長3.11% 全年有機會2.42% 80 | 毛利率攀升 聯發科Q3每股賺3.26元 81 | 聯亞Q3營收季增5成 矽光訂單看到明年2月 82 | 台達電工業自動化收成 電動車起飛 83 | 半月來新高 台幣升3.5分 84 | 神達車聯網收割 獲美政府車隊訂單 85 | 今年製造業景氣 上修至黃藍燈 86 | 蘋果iPhone 8明年推出 上看1.5億支 87 | 第四季SSD價漲10% 創見、威剛利多 88 | 華航聯手漢翔、空巴 搶A350維修商機 89 | 昇恆昌預購網站 年底業績衝億元 90 | 電源步入旺季 台達電、群電營收獲利增 91 | 觀光帶動成長 Q2 GDP3.84% 92 | 台股強彈 大漲214點 93 | 華映Q2虧轉盈 下半年挑戰百億 94 | BDI逼近新高 散裝航運股紅通通 95 | 台股反彈 挑戰萬點動能仍強 96 | 全球生技類股 行情飆漲 97 | 晶華 今年EPS可望破4元 98 | 製藥一軍亮麗 百略獲利增近倍 99 | 掌握關鍵零組件 三星迅速崛起 100 | 外資券商加持 LED亮晶晶 101 | 月線連四紅 台股看好上萬點 102 | 11月份基金表現亞股滿堂彩 103 | 亞泰影像擴產後銷售動能強 Q2單季營收將超越去年同期''' 104 | 105 | def signalMaker(): 106 | #建議可以將做完的漲跌訊號 (downSignal/riseSignal) 另行儲存, 107 | #這麼一來,只要 downSample/riseSample 沒有更新,就不需要每次都要重新計算。 108 | 109 | downSignal = [] 110 | riseSignal = [] 111 | 112 | result = atc.parse(downSample, level="lv2") 113 | #確認仍有字數可使用 114 | if result["status"] == False: 115 | print(result["msg"]) 116 | return None 117 | else: 118 | #將下跌新聞的標題中,每一則動詞收集起來,做為 downSignal 的下跌訊號。 119 | verbLIST = atc.getVerbStemLIST(result) 120 | for v in verbLIST: 121 | if len(v) == 0: 122 | pass 123 | else: 124 | for i in v: 125 | if "negation" in result["result_pos"][0][i[0]-22:i[0]]: #再檢查動詞前是否為「否定」表示。e.g., 不/看好。那麼「看好」應該被歸類到 riseSignal。 126 | riseSignal.append(i[-1]) 127 | else: 128 | downSignal.append(i[-1]) 129 | downSignal = set(downSignal) 130 | 131 | 132 | result = atc.parse(riseSample, level="lv2") 133 | if result["status"] == False: 134 | print(result["msg"]) 135 | return None 136 | else: 137 | #將下跌新聞的標題中,每一則動詞收集起來,做為 riseSignal 的上漲訊號。 138 | verbLIST = atc.getVerbStemLIST(result) 139 | for v in verbLIST: 140 | if len(v) == 0: 141 | pass 142 | else: 143 | for i in v: 144 | if "negation" in result["result_pos"][0][i[0]-22:i[0]]: #再檢查動詞前是否為「否定」表示。e.g., 不會/下跌。那麼「下跌」應該被歸類到 downSignal。 145 | downSignal.append(i[-1]) 146 | else: 147 | riseSignal.append(i[-1]) 148 | riseSignal = set(riseSignal) 149 | 150 | #把 downSignal 和 riseSignal 中重覆的動詞清除。它可能是「中性」或是無關漲跌的動詞。 151 | downSignal = downSignal - riseSignal.intersection(downSignal) 152 | riseSignal = riseSignal - riseSignal.intersection(downSignal) 153 | return (downSignal, riseSignal) 154 | 155 | if __name__== "__main__": 156 | downSignal, riseSignal = signalMaker() 157 | if None in (downSignal, riseSignal): 158 | print("Cannot proceed!") 159 | else: 160 | testSTR = "產業供應鏈分散效應看好東協布局" #測試用句。注意到這一句並沒有在前述學習的 downSample/riseSample 中。 161 | testResult = atc.parse(testSTR, level="lv2") 162 | testVerbLIST = atc.getVerbStemLIST(testResult) 163 | resultLIST = [] 164 | for tv in testVerbLIST: 165 | if len(tv) == 0: 166 | pass 167 | else: 168 | for v in tv: 169 | if v[-1] in downSignal: 170 | if "negation" in testResult["result_pos"][0][v[0]-22:v[0]]: #確認是否有「否定詞」出現在 downSignal 中。如果有的話,那就是上漲囉! 171 | resultLIST.append("這句新聞標題…應該是看漲↗") 172 | else: 173 | resultLIST.append("這句新聞標題…應該是看跌↘") 174 | elif v[-1] in riseSignal: 175 | if "negation" in testResult["result_pos"][0][v[0]-22:v[0]]: #確認是否有「否定詞」出現在 riseSignal 中。如果有的話,那就是下跌囉! 176 | resultLIST.append("這句新聞標題…應該是看跌↘") 177 | else: 178 | resultLIST.append("這句新聞標題…應該是看漲↗") 179 | else: 180 | pass 181 | resultSET = set(resultLIST) 182 | if len(resultSET) == 1: 183 | print(list(resultSET)[0]) 184 | else: 185 | print("這句新聞標題…應該是看跌↘") -------------------------------------------------------------------------------- /Demos/StorySimilarity/StorySimilarity.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | 5 | from Bio import pairwise2 6 | #from Bio.pairwise2 import format_alignment 7 | 8 | try: 9 | # Installed via pip install 10 | try: 11 | from .ArticutAPI import Articut 12 | except: 13 | from ArticutAPI import Articut 14 | except: 15 | # Installed via git clone 16 | import sys 17 | sys.path.append("../..") 18 | from ArticutAPI import Articut 19 | 20 | username = "" 21 | apikey = "" 22 | 23 | articut = Articut(username=username, apikey=apikey) 24 | 25 | 26 | def verbListExtraction(inputSTR): 27 | resultDICT = articut.parse(inputSTR) #呼叫 Articut 進行斷詞/POS/NER 處理 28 | verbLIST = articut.getVerbStemLIST(resultDICT) #取出每一句的動詞 29 | resultLIST = [] 30 | for s in verbLIST: #將每一句的動詞分別取出,略過標點符號 31 | if len(s) == 1: 32 | pass 33 | else: 34 | for v in s: 35 | resultLIST.append(v[-1]) 36 | return ",".join(resultLIST) #將動詞列表黏合成單一字串後回傳 37 | 38 | 39 | if __name__ == "__main__": 40 | text01 = """鑰匙不見了,進不了門,只好找人家來開鎖囉! 41 | 好不容易等到鎖匠來了。可是來的人 是一位老人家。這個人年紀真的很大了。我就開玩笑的問:師傅,您年紀這麼大了,還這麼辛苦出來工作呀!你開鎖還行嗎?老人家聽到我這麼說,很不開心。 42 | 他說:小伙子呀!這對我來說是小事一樁,我當年可是專門開保險箱的。 43 | 我說:真的假的?還真是看不出來。 44 | 師傅:我可是有兩把刷子的,不然怎麼會到去年才放我出來""" 45 | 46 | text02 = """那天鑰匙掉了,沒辦法進門,只好找人來開鎖。 47 | 來的是一位老人家,年紀真的老大了。我開玩笑的問:師傅,您年紀這麼大了,開鎖還行嗎?老人家聽我這麼說不開心了。 48 | 他說:我年輕時,可是專門開保險櫃的。 49 | 我:真的假的? 50 | 老人家:當然是真的!不然怎會到去年才放我出來""" 51 | 52 | text03 = """首先,銀行信用資源應該合理配置,不要過度流向不動產放款,避免銀行授信間接助長炒房、炒地,導致房價不合理上漲。 53 | 央行指出,今年以來,銀行購置住宅貸款及建築貸款年增率快速上升,9 月底全體銀行不動產貸款占總放款比重為 35.8%,接近歷史高點之 37.9%。加上銀行辦理投資客購屋貸款,部分案件貸款成數偏高、貸款利率偏低、寬限期過長,餘屋貸款案件也有授信條件過於寬鬆的現象。央行認為,這些案件可能助長借款人進行高度財務槓桿操作,導致房價不合理上漲。 54 | 第二,銀行應對借款人充分揭露貸款負擔資訊,並提醒對方留意財務規劃。像是首購族群購屋貸款條件,如高貸款成數、長天期貸款年限或較長寬限期等,都要清楚揭露相關貸款資訊,以維護借款人權益。 55 | 第三,銀行應該善盡企業社會責任,引導資金投入實質投資,有助提高就業,增加國人所得。""" 56 | 57 | text04 = """一、銀行信用資源宜合理配置,勿過度流向不動產放款,避免銀行授信間接助長炒房、炒地,導致房價不合理上漲。 58 | 二、銀行應對借款人充分揭露貸款負擔資訊,並提醒其注意財務規劃。 59 | 三、銀行應善盡企業社會責任,引導資金投入實質投資,有助提高就業,增加國人所得。""" 60 | 61 | text05 = """央行籲銀行信用資源宜合理配置,勿過度流向不動產放款,避免銀行授信間接助長炒房、炒地,導致房價不合理上漲。 62 | 央行說明,銀行辦理投資客購屋貸款,部分案件有貸款成數偏高、貸款利率偏低,及寬限期過長等現象,購地貸款案件,也有未確實規範其動工興建時程,借款人利用銀行資金進行養地、囤地之實,另餘屋貸款案件亦有授信條件過於寬鬆等現象。上述案件可能助長借款人進行高度財務槓桿操作,以致房價不合理上漲,不利房市健全發展及影響整體資源之合理配置。 63 | 銀行應對借款人充分揭露貸款負擔資訊,並提醒其注意財務規劃,央行指出,對於首購族群購屋貸款條件,如高貸款成數、長天期貸款年限或較長寬限期等,務必清楚揭露相關貸款資訊,包括寬限期屆滿後每期還款金額變動、不同貸款年限須支付本息總額等資訊,以維護借款人權益,並有助其儘早辦理財務規劃。 64 | 銀行應善盡企業社會責任,引導資金投入實質投資,有助提高就業,增加國人所得,央行強調,近年本國銀行對企業放款成長率不及購置住宅貸款成長率,但銀行資金多來自社會大眾存款,基於其掌握社會寶貴資源,業務經營除考量利潤外,也要善盡企業社會責任,勿使社會資源助長投資炒房、推升房價不合理上漲,以符社會大眾對銀行金融中介角色之期待。""" 65 | 66 | verbSeq01 = verbListExtraction(text01) #將 text01 送入剛才的步驟處理,得到它的動詞序列 67 | verbSeq02 = verbListExtraction(text02) #將 text02 送入剛才的步驟處理,得到它的動詞序列 68 | 69 | alignments = pairwise2.align.globalxx(verbSeq01, verbSeq02) #利用 biopython 比較兩個動詞序列 70 | 71 | baseLength = max((len(verbSeq01), len(verbSeq02)))/2 #計算兩個句子的比較分母。 72 | if alignments[0].score >= baseLength: 73 | baseLength = max((len(verbSeq01), len(verbSeq02))) 74 | 75 | print('兩文本的相似度:{}%'.format(round(alignments[0].score/baseLength*100,3))) #最後輸出兩文本的相似度 -------------------------------------------------------------------------------- /Demos/UserDefined_nonChinese/UserDefined_nonChinese.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | 4 | try: 5 | # Installed via pip install 6 | try: 7 | from .ArticutAPI import Articut 8 | except: 9 | from ArticutAPI import Articut 10 | except: 11 | # Installed via git clone 12 | import sys 13 | sys.path.append("../..") 14 | from ArticutAPI import Articut 15 | 16 | import json 17 | import re 18 | 19 | def translateWithDictionary(Articut_resultDICT, dictionaryFILE): 20 | ''' 21 | 依 dictionaryFILE 翻譯 Articut 回傳的 resultDICT 22 | ''' 23 | #載入自定詞典 24 | try: 25 | with open(dictionaryFILE) as f: 26 | myEnglishDictionary = json.loads(f.read()) 27 | except Exception as e: 28 | print("User Defined File Loading Error.") 29 | print(str(e)) 30 | return {"status": False, "msg": "UserDefinedDICT Parsing ERROR. Please check your the format and encoding."} 31 | stripPat = re.compile("(?<=>).*?(?=<)") 32 | Articut_resultDICT["translated_pos"] = [] 33 | Articut_resultDICT["translated_seg"] = "" 34 | translatePat = re.compile("(?<=).*?(?=)") 35 | for p in resultDICT["result_pos"]: 36 | translateLIST = [(t.start(), t.end(), t.group(0)) for t in reversed(list(translatePat.finditer(p)))] 37 | if translateLIST == []: 38 | Articut_resultDICT["translated_pos"].append(p) 39 | else: 40 | for t in translateLIST: 41 | for k in myEnglishDictionary: 42 | if t[2] in myEnglishDictionary[k]: 43 | #目前是找到就停。如有其它的比對策略,例如最長優先…等,可在此區塊調整。 44 | targetSTR = k 45 | break 46 | else: 47 | targetSTR = t[2] 48 | 49 | p = "{}{}{}".format(p[:t[0]], targetSTR, p[t[1]:]) 50 | Articut_resultDICT["translated_pos"].append(p) 51 | Articut_resultDICT["translated_seg"] = "".join([x.group() for x in stripPat.finditer("".join(Articut_resultDICT["translated_pos"]))]) 52 | return Articut_resultDICT 53 | 54 | 55 | 56 | 57 | 58 | 59 | if __name__ == "__main__": 60 | 61 | try: 62 | #使用自己的斷詞額度。 63 | with open("../../account.info", "r") as f: 64 | userDICT = json.loads(f.read()) 65 | username = userDICT["email"] 66 | apikey = userDICT["apikey"] 67 | atc = Articut(username=userDICT["email"], apikey=userDICT["apikey"]) 68 | except: 69 | #使用免費的斷詞額度。 70 | #實體化 Articut() 71 | atc = Articut() 72 | 73 | inputSTR = '''You know,我們company是一個比較global的corporation,所以進來的candidate都要有一定的English的communication的ability,才qualified可以這樣mix的speak的。如果你老是speak這個Chinese的話,就給人local的image,you know,這個first impression就low掉了,可以understand嗎''' 74 | 75 | resultDICT = atc.parse(inputSTR, userDefinedDictFILE="./myEnglishDICT.json") 76 | 77 | translateResult = translateWithDictionary(resultDICT, dictionaryFILE="./myEnglishDICT.json") 78 | 79 | 80 | print("轉譯前:\n{}\n".format(inputSTR)) 81 | print("-字典中沒有 company 這個字!-\n") 82 | print("轉譯後:\n{}\n".format(translateResult["translated_seg"])) 83 | -------------------------------------------------------------------------------- /Demos/UserDefined_nonChinese/myEnglishDICT.json: -------------------------------------------------------------------------------- 1 | { 2 | "你":["you", "You", "YOU"], 3 | "知道": ["know", "Know", "KNOW"], 4 | "全球的":["global", "Global", "GLOBAL"], 5 | "企業":["corporation", "Corporation", "CORPORATION"], 6 | "候選人":["candidate", "Candidate", "CANDIDATE"], 7 | "英文":["english", "English", "ENGLISH"], 8 | "溝通":["communication", "Communication", "COMMUNICATION"], 9 | "能力":["ability", "Ability", "ABILITY"], 10 | "夠資格":["qualified", "Qualified", "QUALIFIED"], 11 | "混合":["mix", "Mix", "MIX"], 12 | "講":["speak", "Speak", "SPEAK"], 13 | "中國":["chinese", "Chinese", "CHINESE"], 14 | "中文":["chinese", "Chinese", "CHINESE"], 15 | "中國的":["chinese", "Chinese", "CHINESE"], 16 | "中文的":["chinese", "Chinese", "CHINESE"], 17 | "中國人":["chinese", "Chinese", "CHINESE"], 18 | "中國人的":["chinese", "Chinese", "CHINESE"], 19 | "本地":["local", "Local", "LOCAL"], 20 | "形象":["image", "Image", "IMAGE"], 21 | "第一":["first", "First", "FIRST"], 22 | "印象":["impression", "Impression", "IMPRESSION"], 23 | "低":["low", "Low", "LOW"], 24 | "瞭解":["understand", "Understand", "UNDERSTAND"] 25 | } -------------------------------------------------------------------------------- /Docs/Articut-GraphQL/ReadMe_EN.md: -------------------------------------------------------------------------------- 1 | Switch to: [中文版 ReadMe](./ReadMe_TW.md) 2 | ------------------------------ 3 | 4 | # Articut-GraphQL (Psudo-spaCy NLP Tool for Chinese) 5 | 6 | Articut-GraphQL the most practical sPacy NLP tool for Chinese language. It is not driven by Machine Learning but Chinese Language Syntactic Rules. Simply load the .json file which contains the text processed with Articut CWS, then you are good to go. 7 | 8 | ## Use it Online 9 | 10 | To be released soon...(very soon, I promise.) 11 | 12 | ### Features 13 | Taking the sentence **`曾正元在新竹的交通大學讀書`** (Zeng, Jen-yuan studies in the Chiao Tung University in Hsinchu.) for example, the difference of `doc` between using spaCy and Articut-GraphQL are shown below: 14 | 15 | ![attributes_of_doc](../../Screenshots/attributes_of_doc_EN.gif) 16 | 17 | ### NER 18 | 19 | Articut-GraphQL can recognize [Person]、[Pronoun]、[Location]、[Route names in Taiwan]、 [Address in Taiwan]、[URL]...etc named entities. 20 | 21 | ![ner_of_doc](../../Screenshots/ner_of_doc.png) 22 | 23 | ## Using Articut-GraphQL 24 | ### System requirement 25 | 26 | Python 3.6.1+ 27 | 28 | ### Download 29 | `git clone git@github.com:Droidtown/ArticutAPI.git` 30 | 31 | ### Specify a text file 32 | Taking file **"articutResult.json"** for example, the content of the file is the processed results of some Chinese text by Articut and saved as .json format. 33 | 34 | **`filepath: "articutResult.json"`** 35 | 36 | ### Specify Syntactic Rules: 37 | Currently, we only support "Traditional Chinese", so it has to be "TW" now. 38 | 39 | **`model:"TW"`** 40 | 41 | ### doc Manual 42 | ``` 43 | text => Content of the text 44 | tokens { => Attributes of the tokens 45 | text => Text of the token 46 | pos_ => SpaCy POS Tag 47 | tag_ => Articut POS Tag 48 | isStop 49 | isEntity 50 | isVerb 51 | isTime 52 | isClause 53 | isKnowledge 54 | } 55 | ents { 56 | persons { => Persons and Pronouns 57 | text 58 | pos_ 59 | tag_ 60 | } 61 | nouns { => Nouns and Named Entities 62 | text 63 | pos_ 64 | tag_ 65 | } 66 | numbers { => Numbers and Quantity Expressions 67 | text 68 | pos_ 69 | tag_ 70 | } 71 | sites { => Location, Road names of Taiwan and Address of Taiwan 72 | text 73 | pos_ 74 | tag_ 75 | } 76 | } 77 | ``` 78 | 79 | ### Begin Using GraphQL 80 | 81 | ### Using GraphiQL 82 | 83 | GraphiQL requuires modules listed below. You may install them easily with pip: 84 | 85 | ``` 86 | $ pip install graphene 87 | $ pip install starlette 88 | $ pip install jinja2 89 | $ pip install uvicorn 90 | ``` 91 | 92 | Execute ArticutGraphQL.py with the filepath lead to the result of your text document processed with Articut. Then, open your Internet browser and use URL: `http://0.0.0.0:8000/` 93 | 94 | ``` 95 | $ python ArticutGraphQL.py articutResult.json 96 | ``` 97 | 98 | ### Example 01 99 | ![GraphiQL Example 01](../../Screenshots/GraphiQL_Example01.png) 100 | 101 | ### Example 02 102 | ![GraphiQL Example 02](../../Screenshots/GraphiQL_Example02.png) 103 | 104 | ### Using Articut-GraphQL 105 | `graphene` module is required, you may simply install graphene module with pip: 106 | 107 | ``` 108 | $ pip install graphene 109 | ``` 110 | ### Example 01 111 | ``` 112 | inputSTR = "地址:宜蘭縣宜蘭市縣政北七路六段55巷1號2樓" 113 | result = articut.parse(inputSTR) 114 | with open("articutResult.json", "w", encoding="utf-8") as resultFile: 115 | json.dump(result, resultFile, ensure_ascii=False) 116 | 117 | graphQLResult = articut.graphQL.query( 118 | filePath="articutResult.json", 119 | query=""" 120 | { 121 | meta { 122 | lang 123 | description 124 | } 125 | doc { 126 | text 127 | tokens { 128 | text 129 | pos_ 130 | tag_ 131 | isStop 132 | isEntity 133 | isVerb 134 | isTime 135 | isClause 136 | isKnowledge 137 | } 138 | } 139 | }""") 140 | pprint(graphQLResult) 141 | ``` 142 | 143 | ### Result: 144 | ![Articut-GraphQL Example 01](../../Screenshots/Articut-GraphQL_Example01.png) 145 | 146 | ### Example 02 147 | ``` 148 | inputSTR = inputSTR = "劉克襄在本次活動當中,分享了台北中山北路一日遊路線。他表示當初自己領著柯文哲一同探索了雙連市場與中山捷運站的小吃與商圈,還有商圈內的文創商店與日系雜物店鋪,都令柯文哲留下深刻的印象。劉克襄也認為,雙連市場內的魯肉飯、圓仔湯與切仔麵,還有九條通的日式店家、居酒屋等特色,也能讓人感受到台北舊城區不一樣的魅力。" 149 | result = articut.parse(inputSTR) 150 | with open("articutResult.json", "w", encoding="utf-8") as resultFile: 151 | json.dump(result, resultFile, ensure_ascii=False) 152 | 153 | graphQLResult = articut.graphQL.query( 154 | filePath="articutResult.json", 155 | query=""" 156 | { 157 | meta { 158 | lang 159 | description 160 | } 161 | doc { 162 | text 163 | ents { 164 | persons { 165 | text 166 | pos_ 167 | tag_ 168 | } 169 | } 170 | } 171 | }""") 172 | pprint(graphQLResult) 173 | ``` 174 | 175 | ### Result: 176 | ![Articut-GraphQL 回傳結果2](../../Screenshots/Articut-GraphQL_Example02.png) 177 | 178 | 179 | 180 | ## License 181 | 182 | MIT License - Details: [LICENSE.md](https://github.com/Droidtown/ArticutAPI/blob/master/LICENSE) -------------------------------------------------------------------------------- /Docs/Articut-GraphQL/ReadMe_TW.md: -------------------------------------------------------------------------------- 1 | [English ReadMe](ReadMe_EN.md) 2 | ------------------------------ 3 | 4 | # Articut-GraphQL (類 spaCy 中文) 5 | 6 | Articut-GraphQL 是現今完成度最高,可操作中文文本的 類 spaCy 工具。不需要訓練模型,只要把經過 Articut 中文斷詞處理後的結果載入 Articut-GraphQL 即可開始使用。 7 | 8 | ## 線上操作 9 | 10 | 即將登場 11 | 12 | ### 特性 13 | 以 **`曾正元在新竹的交通大學讀書`** 這個句子為例,純粹 spaCy 做訓練,以及只用 Articut-GraphQL 的 `Doc` 各種屬性如下: 14 | 15 | ![attributes_of_doc](../../Screenshots/attributes_of_doc.gif) 16 | 17 | ### NER 18 | 19 | Articut-GraphQL 可辨識 [人名]、[人稱代名詞]、[地名]、[台灣道路名稱]、 [台灣地址]、[URL]…等「命名實體」(Named Entity) 20 | 21 | ![ner_of_doc](../../Screenshots/ner_of_doc.png) 22 | 23 | ## 開始使用 24 | 25 | 26 | 27 | ### 系统要求 28 | 29 | Python 3.6.1+ 30 | 31 | ### 安装 32 | `git clone git@github.com:Droidtown/ArticutAPI.git` 33 | 34 | ### 指定文本 35 | 以 "articutResult.json" 為例。其內容應為經過 Articut 斷詞處理後的結果,另存成 .json 格式。 36 | 37 | **`filepath: "articutResult.json"`** 38 | 39 | ### 指定句法規則 40 | 目前僅支援「繁體中文」,故只能填寫大寫的 "TW" 41 | 42 | **`model:"TW"`** 43 | 44 | ### Doc 結構說明 45 | ``` 46 | text => 原文內容 47 | tokens { => 每個詞組的詳細資料 48 | text => 詞組 49 | pos_ => SpaCy POS Tag 50 | tag_ => Articut POS Tag 51 | isStop 52 | isEntity 53 | isVerb 54 | isTime 55 | isClause 56 | isKnowledge 57 | } 58 | ents { 59 | persons { => 人名、人稱代名詞 60 | text 61 | pos_ 62 | tag_ 63 | } 64 | nouns { => 名詞、命名實體 65 | text 66 | pos_ 67 | tag_ 68 | } 69 | numbers { => 數字、數量 70 | text 71 | pos_ 72 | tag_ 73 | } 74 | sites { => 地名、台灣道路名稱、台灣地址 75 | text 76 | pos_ 77 | tag_ 78 | } 79 | } 80 | ``` 81 | 82 | ### 開始操作 83 | 84 | ### 使用 GraphiQL 工具 85 | 86 | 安裝模組 87 | 88 | ``` 89 | $ pip install graphene 90 | $ pip install starlette 91 | $ pip install jinja2 92 | $ pip install uvicorn 93 | ``` 94 | 95 | 執行 ArticutGraphQL.py 帶入 Articut 斷詞結果檔案路徑,並開啟瀏覽器輸入網址 http://0.0.0.0:8000/ 96 | 97 | ``` 98 | $ python ArticutGraphQL.py articutResult.json 99 | ``` 100 | 101 | ### 使用範例 01 102 | ![GraphiQL Example 01](../../Screenshots/GraphiQL_Example01.png) 103 | 104 | ### 使用範例 02 105 | ![GraphiQL Example 02](../../Screenshots/GraphiQL_Example02.png) 106 | 107 | ### 使用 Articut-GraphQL 108 | 109 | 安裝 graphene 模組 110 | 111 | ``` 112 | $ pip install graphene 113 | ``` 114 | ### 使用範例 01 115 | ``` 116 | inputSTR = "地址:宜蘭縣宜蘭市縣政北七路六段55巷1號2樓" 117 | result = articut.parse(inputSTR) 118 | with open("articutResult.json", "w", encoding="utf-8") as resultFile: 119 | json.dump(result, resultFile, ensure_ascii=False) 120 | 121 | graphQLResult = articut.graphQL.query( 122 | filePath="articutResult.json", 123 | query=""" 124 | { 125 | meta { 126 | lang 127 | description 128 | } 129 | doc { 130 | text 131 | tokens { 132 | text 133 | pos_ 134 | tag_ 135 | isStop 136 | isEntity 137 | isVerb 138 | isTime 139 | isClause 140 | isKnowledge 141 | } 142 | } 143 | }""") 144 | pprint(graphQLResult) 145 | ``` 146 | 147 | ### 回傳結果 148 | ![Articut-GraphQL Example 01](../../Screenshots/Articut-GraphQL_Example01.png) 149 | 150 | ### 使用範例 02 151 | ``` 152 | inputSTR = inputSTR = "劉克襄在本次活動當中,分享了台北中山北路一日遊路線。他表示當初自己領著柯文哲一同探索了雙連市場與中山捷運站的小吃與商圈,還有商圈內的文創商店與日系雜物店鋪,都令柯文哲留下深刻的印象。劉克襄也認為,雙連市場內的魯肉飯、圓仔湯與切仔麵,還有九條通的日式店家、居酒屋等特色,也能讓人感受到台北舊城區不一樣的魅力。" 153 | result = articut.parse(inputSTR) 154 | with open("articutResult.json", "w", encoding="utf-8") as resultFile: 155 | json.dump(result, resultFile, ensure_ascii=False) 156 | 157 | graphQLResult = articut.graphQL.query( 158 | filePath="articutResult.json", 159 | query=""" 160 | { 161 | meta { 162 | lang 163 | description 164 | } 165 | doc { 166 | text 167 | ents { 168 | persons { 169 | text 170 | pos_ 171 | tag_ 172 | } 173 | } 174 | } 175 | }""") 176 | pprint(graphQLResult) 177 | ``` 178 | 179 | ### 回傳結果 180 | ![Articut-GraphQL 回傳結果2](../../Screenshots/Articut-GraphQL_Example02.png) 181 | 182 | ## 授權 183 | 184 | MIT License - 詳參 [LICENSE.md](https://github.com/Droidtown/ArticutAPI/blob/master/LICENSE) -------------------------------------------------------------------------------- /Docs/Articut-GraphQL/Tutorial_EN.md: -------------------------------------------------------------------------------- 1 | ### Complete Guide to Articut-Graphql 2 | 3 | **Articut-GraphQL** is an alternative of [spaCy](https://spacy.io/) spaCy for Chinse text in the Python Natural Language Processing environment and aims to become the de facto library for Chinese NLP tasks. There are some really good reasons for its popularity: 4 | 5 | #### Easy to use 6 | Written in Pure Python (**version 3.6.1+**), one can easily get a copy of it from the project page[ project page](https://github.com/Droidtown/ArticutAPI) on Github. 7 | 8 | #### ACCURATE 9 | Chinese language lacks of affixes indicating the lexical POS, the syntax of the sentence plays an important role in determining the POS of each word. Since Articut Chinese Word Segmentation (CWS) system is driven by syntactica structure, it's POS accuracy is one of the leading solutions in Chinese NLP tools. 10 | 11 | #### Batteries included 12 | Index preserving tokenization (details about this later) 13 | Part Of Speech tagging (POS), 14 | Named Entity Recognition (NER), 15 | Focus on Chinese language, 16 | Easy and understandable visualizations 17 | 18 | #### Extensible with Machine Learning (or DeepLearning) tools 19 | If you like, Articut-GraphQL can be easily fused with mainstream machine learning tools such Scikit-Learn, TensorFlow, gensim among others. 20 | 21 | *** 22 | 23 | ### Quickstart 24 | 25 | #### Installation 26 | Na, Articut-GrahQL does not require installation. Just `git clone` a copy of your own: 27 | 28 | `git clone https://github.com/Droidtown/ArticutAPI.git` 29 | 30 | Then you are ready to rock & roll. 31 | 32 | #### Prepare text and save it locally. 33 | from ArticutAPI import Articut 34 | import json 35 | 36 | articut = Articut() 37 | inputSTR = "會被大家盯上,才證明你有實力。" #Put your Chinese text here. 38 | result = articut.parse(inputSTR) 39 | with open ("articutResult.json", "w", encoding="utf-8") as aFILE: 40 | json.dump(result, aFILE, ensure_ascii=False) 41 | 42 | #### Load the processed text to Articut-GraphQL 43 | from ArticutAPI import Articut 44 | from pprint import pprint 45 | import json 46 | graphQLResult = articut.graphQL.query( 47 | filePath="articutResult.json", 48 | query=""" 49 | { 50 | meta { 51 | lang 52 | description 53 | } 54 | doc { 55 | text 56 | tokens { 57 | text 58 | pos_ 59 | tag_ 60 | isStop 61 | isEntity 62 | isVerb 63 | isTime 64 | isClause 65 | isKnowledge 66 | } 67 | } 68 | }""") 69 | pprint(graphQLResult) 70 | 71 | *** 72 | ### Conclusions 73 | 74 | Articut-GraphQL is a modern, reliable NLP tool for doing NLP with Python. WIth the GraphQL and commandline duel interface, It can act as the central part of your production NLP pipeline. -------------------------------------------------------------------------------- /Docs/Articut-GraphQL/Tutorial_TW.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/Articut-GraphQL/Tutorial_TW.md -------------------------------------------------------------------------------- /Docs/KNOWLEDGE_currency.md: -------------------------------------------------------------------------------- 1 | # Articut: KNOWLEDGE_currency 標記說明 2 | ------------------ 3 | ## 支援表示格式 4 | ### 金額+貨幣 (含全形、大小寫中文數字及混用數字) 5 | * 費用共為**`150 元`** 6 | * 多花了他**`五塊錢`**才買到 7 | * 標價為**`149.99 法郎`**呢! 8 | * 只要**`99.99 先令`**就能買一組哦! 9 | * 每杯**`三百六十盧布`**很划算的。 10 | * 欠下**`兩佰億歐元`**的債務。 11 | * 每季收入**`200萬日幣`**的銷售額。(半形數字+國字數字) 12 | 13 | ### 貨幣名稱+金額+貨幣單位 (含全形數字。若貨幣名稱在數字以前,則優先向後擷取至貨幣單位。) 14 | * 日幣**`10,000.33 元`**的漲幅。(美式千元符「,」,「元」前有空格。) 15 | * 韓元**`50'000 元`**只有一點點。(歐式千元符「\'」,「元」前有空格。) 16 | * 美金**`99.99 元`**就能買三包。(小數點「.」,「元」前有空格。) 17 | * 美金**`伍仟參佰捌拾塊錢`**的金額。(大寫中文數字。) 18 | * 歐元**`990元`**(全型數字,元前不加空格) 19 | * 新台幣**`一百零五萬元`** 20 | * 英鎊**`二十五萬元`** 21 | * 印尼**`三百卅盾`**(大寫中文數字「卅」) 22 | * 新加坡幣**`廿萬元`**(大寫中文數字「廿」) 23 | * 加幣**`壹仟參佰陸拾萬 元`**(大寫中文數字,「元」前有空格。) 24 | 25 | ## 注意!!! 26 | ### 貨幣名稱+數字+「非」貨幣單位 27 | #### 為避免產生誤判,如果數字後並「非」貨幣單位,則不會往後擷取。雖然「美金30」看起來是貨幣,但也可能會是: 28 | * 美金*`30`*天內跌了 5%… (此時「100」不會被標為**KNOWLEDGE_currency**) 29 | * 日幣*`2`*度大漲… (此時的「2」不會被標為 **KNOWLEDGE_currency**) 30 | 31 | ------------------ 32 | ## 支援貨幣單位 33 | 元、塊錢 34 | ## 支援貨幣列表 35 | ### 亞洲地區 36 | * 新台幣、新臺幣、台幣、臺幣 37 | * 日幣、日圓、日元 38 | * 韓圜、韓幣、韓元 39 | * 泰銖、泰幣 40 | * 人民幣 41 | * 港幣 42 | * 新加坡幣、新幣 43 | * 菲律賓披索、菲律賓比索、菲國披索、菲國比索 44 | * 越南盾 45 | * 印尼幣 46 | * 馬來幣 47 | * 緬元 48 | 49 | ### 美洲地區 50 | * 美金、美元 51 | * 加拿大幣、加幣 52 | * 墨西哥披索、墨西哥比索 53 | 54 | ### 歐洲地區 55 | * 歐元 56 | * 法郎、瑞士法郎 57 | * 英鎊、先令 58 | * 盧布、盧比 59 | 60 | ### 大洋洲地區 61 | * 澳幣 62 | 63 | ### 非洲地區 64 | * 南非幣 -------------------------------------------------------------------------------- /Docs/LocalRE.md: -------------------------------------------------------------------------------- 1 | # Articut Address 2 | ----------------- 3 | ## 地址的格式 4 | 地址,是一串的字符,內含國家、省份、城市或鄉村、街道、門牌號碼、屋邨、大廈等建築物名稱,或者再加樓層數目、房間編號等。一個有效的地址應該是**獨一無二**的,才能讓郵差等物流從業員派送郵件,或者上門收件。 5 | 6 | 羅斯福路四段,指的是地理上的`區域`,而不是一個`地址`,因為光是看到「羅斯福路四段」並無法得知正確的所在位置。 7 | ``` 8 | X 台北市大安區羅斯福路四段 9 | ``` 10 | 11 | 羅斯福路四段1號,指的是地理上的`絕對位置`,並可正確的知道所在位置。 12 | ``` 13 | O 台北市大安區羅斯福路四段1號 14 | ``` 15 | 16 | ## 台灣地址規則 17 | | 行政區名稱 | | | 街道名稱 | | | | 門牌 | | | 18 | |:-------------:|:----------------:|:------:|:-----------:|:---:|:---:|:--:|:----:|:--:|:--:| 19 | | `直轄市、縣、市` | 鄉、鎮、縣轄市、區 | 村、里 | `大道、路、街` | 段 | 巷 | 弄 | `號` | 樓 | 室 | 20 | 21 | 註1:非灰底文字視地區道路及建築物狀況,不一定有此層級之名稱。 22 | 註2:部分偏遠地區無明確之路名,則在鄰之下劃定次分區,依次分區中之建築物編號。 23 | 24 | ----------------- 25 | 26 | ## 開始使用 27 | ```python3 28 | inputSTR = "7-11的新店位於台北市信義區忠孝東路四段559巷24號" 29 | result = articut.parse(inputSTR) 30 | ``` 31 | 32 | ### 斷詞結果 33 | ```txt 34 | 7-11/的/新店/位於/台北市信義區忠孝東路四段559巷24號/ 35 | ``` 36 | 37 | ### 標記結果 38 | ```json 39 | ["7-11新店位於台北市信義區忠孝東路四段559巷24號"] 40 | ``` 41 | 42 | ### 列出所有的台灣地址 43 | 44 | ```python3 45 | addTWLIST = articut.getAddTWLIST(result) 46 | ``` 47 | 擷取 ``...`` 的結果。 48 | ```json 49 | [[(132, 151, "台北市信義區忠孝東路四段559巷24號")]] 50 | ``` 51 | 52 | ### 分段地址 53 | ```python3 54 | ##localRE: 市 55 | cityResult = articut.localRE.getAddressCity(result) 56 | [[(132, 135, "台北市")]] 57 | 58 | ##localRE: 區 59 | districtResult = articut.localRE.getAddressDistrict(result) 60 | [[(135, 138, "信義區")]] 61 | 62 | ##localRE: 路 63 | roadResult = articut.localRE.getAddressRoad(result) 64 | [[(138, 142, "忠孝東路")]] 65 | 66 | ##localRE: 段 67 | sectionResult = articut.localRE.getAddressSection(result) 68 | [[(142, 144, "四段")]] 69 | 70 | ##localRE: 巷、弄 71 | alleyResult = articut.localRE.getAddressAlley(result) 72 | [[(144, 148, '559巷')]] 73 | 74 | ##localRE: 號 75 | numberResult = articut.localRE.getAddressNumber(result) 76 | [[(148, 151, "24號")]] 77 | ``` 78 | -------------------------------------------------------------------------------- /Docs/fonts/FakePearl-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/fonts/FakePearl-Regular.woff -------------------------------------------------------------------------------- /Docs/fonts/FakePearl-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/fonts/FakePearl-Regular.woff2 -------------------------------------------------------------------------------- /Docs/fonts/slate-7b7da4fe.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/fonts/slate-7b7da4fe.ttf -------------------------------------------------------------------------------- /Docs/fonts/slate-cfc9d06b.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/fonts/slate-cfc9d06b.eot -------------------------------------------------------------------------------- /Docs/fonts/slate-e55b8307.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Docs/fonts/slate.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/fonts/slate.woff -------------------------------------------------------------------------------- /Docs/fonts/slate.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/fonts/slate.woff2 -------------------------------------------------------------------------------- /Docs/images/Articut_img01-0e747758.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/images/Articut_img01-0e747758.png -------------------------------------------------------------------------------- /Docs/images/favicon-e95f49ea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/images/favicon-e95f49ea.png -------------------------------------------------------------------------------- /Docs/images/logo-e4b85fef.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Docs/images/logo-e4b85fef.png -------------------------------------------------------------------------------- /Docs/stylesheets/print-68c56d0f.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.content h1,.content h2,.content h3,.content h4,body{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:16px}.content h1,.content h2,.content h3,.content h4{font-weight:bold}.content pre,.content code{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;font-size:14px;line-height:1.5}.content pre,.content code{word-break:break-all;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}@font-face{font-family:'slate';src:url(../fonts/slate-cfc9d06b.eot?-syv14m);src:url(../fonts/slate-cfc9d06b.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate-7b7da4fe.ttf?-syv14m) format("truetype"),url(../fonts/slate-e55b8307.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.tocify,.toc-footer,.lang-selector,.search,#nav-button{display:none}.tocify-wrapper>img{margin:0 auto;display:block}.content{font-size:12px}.content pre,.content code{border:1px solid #999;border-radius:5px;font-size:0.8em}.content pre code{border:0}.content pre{padding:1.3em}.content code{padding:0.2em}.content table{border:1px solid #999}.content table tr{border-bottom:1px solid #999}.content table td,.content table th{padding:0.7em}.content p{line-height:1.5}.content a{text-decoration:none;color:#000}.content h1{font-size:2.5em;padding-top:0.5em;padding-bottom:0.5em;margin-top:1em;margin-bottom:21px;border:2px solid #ccc;border-width:2px 0;text-align:center}.content h2{font-size:1.8em;margin-top:2em;border-top:2px solid #ccc;padding-top:0.8em}.content h1+h2,.content h1+div+h2{border-top:none;padding-top:0;margin-top:0}.content h3,.content h4{font-size:0.8em;margin-top:1.5em;margin-bottom:0.8em;text-transform:uppercase}.content h5,.content h6{text-transform:uppercase}.content aside{padding:1em;border:1px solid #ccc;border-radius:5px;margin-top:1.5em;margin-bottom:1.5em;line-height:1.6}.content aside:before{vertical-align:middle;padding-right:0.5em;font-size:14px}@media print{.copy-clipboard{display:none}} -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Droidtown Linguistic. Tech. Co., Ltd. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include ArticutAPI/Toolkit/data/*json 2 | -------------------------------------------------------------------------------- /MP_ArticutAPI.py: -------------------------------------------------------------------------------- 1 | ArticutAPI/MP_ArticutAPI.py -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_Bible_Characters.json: -------------------------------------------------------------------------------- 1 | { 2 | "含" : [], 3 | "但" : [], 4 | "以賽亞" : [], 5 | "摩西" :["梅瑟"], 6 | "約瑟" : [], 7 | "約書亞" : [], 8 | "約示巴" : [], 9 | "約蘭" : [], 10 | "以西結" : ["厄則克耳"], 11 | "以諾" : [], 12 | "乙太" : [], 13 | "戶篩" : [], 14 | "以他瑪" : [], 15 | "雅比斯" : [], 16 | "伊施波設" : [], 17 | "耶何耶大" : [], 18 | "米非波設" : [], 19 | "羅得" : [], 20 | "亞伯拉罕" : [], 21 | "亞伯" : [], 22 | "亞倫" : [], 23 | "押沙龍" : [], 24 | "亞干" : [], 25 | "亞當" : [], 26 | "亞哈" : [], 27 | "亞哈隨魯" : [], 28 | "阿摩司" : ["亞毛斯"], 29 | "巴蘭" : [], 30 | "巴勒" : [], 31 | "便雅憫" : [], 32 | "波阿斯" : [], 33 | "該隱" : [], 34 | "迦勒" : [], 35 | "但以理" :["達尼爾"], 36 | "大衛" : [], 37 | "施亞雅述" : [], 38 | "示瑪雅" : [], 39 | "便哈達" : [], 40 | "比拿雅" : [], 41 | "伯沙撒" : [], 42 | "巴西萊" : [], 43 | "巴錄" : [], 44 | "基拿尼雅" : [], 45 | "比撒列" : [], 46 | "伊利達" : [], 47 | "古列" : [], 48 | "大坍" : [], 49 | "大利烏" : [], 50 | "多益" : [], 51 | "以伯米勒" : [], 52 | "以笏" : [], 53 | "以利" : [], 54 | "以利亞撒" : [], 55 | "以利亞" : ["厄里亞"], 56 | "以利沙" : ["伊萊沙"], 57 | "以法蓮" : [], 58 | "以利戶" : [], 59 | "以利押" : [], 60 | "以利以謝" : [], 61 | "以利加拿" : [], 62 | "基哈西" : [], 63 | "基大利" : [], 64 | "西西拉" : [], 65 | "示每" : [], 66 | "雅億" : [], 67 | "撒督" : [], 68 | "以掃" : [], 69 | "亞設" : [], 70 | "烏西雅" : [], 71 | "以斯拉" : [], 72 | "迦得" : [], 73 | "基甸" : [], 74 | "歌利亞" : [], 75 | "哈巴谷" : [], 76 | "哈該" : [], 77 | "哈曼" : [], 78 | "希西家" : [], 79 | "何西阿" : ["歐瑟亞"], 80 | "以撒" : [], 81 | "以實瑪利" : [], 82 | "雅各" : ["雅各伯"], 83 | "亞何利亞伯" : [], 84 | "俄德" : [], 85 | "拿答" : [], 86 | "拿伯" : [], 87 | "拿八" : [], 88 | "米沙利" : [], 89 | "米該雅" : [], 90 | "以薩迦" : [], 91 | "比加" : [], 92 | "雅撒尼亞" : [], 93 | "拉伯沙基" : [], 94 | "約沙法" : [], 95 | "沙得拉" : [], 96 | "西拿基立" : [], 97 | "利甲" : [], 98 | "利宏" : [], 99 | "珊迦" : [], 100 | "沙法" : [], 101 | "耶戶" : [], 102 | "耶弗他" : [], 103 | "耶利米" : [], 104 | "葉忒羅" : [], 105 | "約押" : [], 106 | "約阿施" : [], 107 | "約伯" : [], 108 | "約珥" : ["岳厄爾"], 109 | "約拿" : [], 110 | "約拿單" : [], 111 | "可拉" : [], 112 | "拉班" : [], 113 | "拉麥" : [], 114 | "瑪拉基" : [], 115 | "瑪拿西" : [], 116 | "麥基洗德" : [], 117 | "瑪土撒拉" : [], 118 | "彌迦" : [], 119 | "乃縵" : [], 120 | "那鴻" : [], 121 | "拿弗他利" : [], 122 | "拿單" : [], 123 | "尼布甲尼撒" : [], 124 | "尼希米" : [], 125 | "寧錄" : [], 126 | "挪亞" : [], 127 | "俄巴底亞" : ["俄巴底"], 128 | "俄備得" : [], 129 | "俄別以東" : [], 130 | "阿珥楠" : [], 131 | "俄陀聶" : [], 132 | "法勒斯" : [], 133 | "法老" : [], 134 | "非尼哈" : [], 135 | "波提乏" : [], 136 | "羅波安" : [], 137 | "流便" : ["呂便"], 138 | "參孫" : [], 139 | "撒母耳" : ["撒慕爾"], 140 | "參巴拉" : [], 141 | "亞撒利雅" : [], 142 | "亞薩" : [], 143 | "亞撒黑" : [], 144 | "亞撒" : [], 145 | "亞達薛西" : [], 146 | "暗蘭" : [], 147 | "押撒" : [], 148 | "押尼珥" : [], 149 | "亞比亞他" : [], 150 | "亞比拿達" : [], 151 | "亞比篩" : [], 152 | "亞比雅" : [], 153 | "亞瑪謝" : [], 154 | "亞希多弗" : [], 155 | "亞多尼比色" : [], 156 | "亞多尼雅" : [], 157 | "亞希雅" : [], 158 | "亞哈斯" : [], 159 | "亞古珥" : [], 160 | "巴拉" : [], 161 | "掃羅王" : ["掃羅", "保羅"], 162 | "塞特" : [], 163 | "西緬" : [], 164 | "所羅門王" :["所羅門"], 165 | "他拉" : [], 166 | "利未" : [], 167 | "多比雅" : [], 168 | "烏利亞" : [], 169 | "烏撒" : [], 170 | "猶大" : ["猶達斯", "達太", "達陡", "猶達斯依斯加略"], 171 | "西布倫" : [], 172 | "撒迦利亞" : [], 173 | "西底家" : [], 174 | "西羅非哈" : [], 175 | "西番雅" : [], 176 | "所羅巴伯" : [], 177 | "亞比該" : [], 178 | "亞西納" : [], 179 | "拔示巴" : [], 180 | "底波拉" : ["德波辣"], 181 | "底拿" : [], 182 | "以斯帖" : [], 183 | "夏娃" : [], 184 | "夏甲" : [], 185 | "哈拿" : [], 186 | "歌篾" : [], 187 | "革舜" : [], 188 | "何巴" : [], 189 | "何弗尼" : [], 190 | "希勒家" : [], 191 | "哈拿篾" : [], 192 | "戶勒大" : [], 193 | "耶洗別" : [], 194 | "約基別" : [], 195 | "利亞" : [], 196 | "亞拿" : [], 197 | "拉結" : [], 198 | "挪亞底" : [], 199 | "瑪挪亞" : [], 200 | "哥轄" : [], 201 | "約西亞" : [], 202 | "米甲" : [], 203 | "米利暗" : [], 204 | "利慕伊勒" : [], 205 | "拿俄米" : [], 206 | "喇合" : [], 207 | "利百加" : [], 208 | "路得" : [], 209 | "撒拉" : [], 210 | "他瑪" : [], 211 | "瓦實提" : [], 212 | "西坡拉" : [], 213 | "亞大" : [], 214 | "洗魯雅" : [], 215 | "亞他利雅" : [], 216 | "大利拉" : [], 217 | "俄珥巴" : [], 218 | "毘尼拿" : [], 219 | "阿荷利巴" : [], 220 | "示巴女王" : [], 221 | "安德烈" : ["安德肋", "安得烈"], 222 | "巴多羅買" : ["巴爾多祿茂", "拿但業"], 223 | "大希律王" : [], 224 | "小希律王" : [], 225 | "拉撒路" : [], 226 | "路加" : [], 227 | "馬可" : [], 228 | "馬大" : [], 229 | "瑪利亞" : ["馬利亞"], 230 | "腓立門" : [], 231 | "彼拉多" :["本丟彼拉多", "本丟·彼拉多", "本丟", "般雀", "比辣多"], 232 | "提摩太" :[], 233 | "提多" :[], 234 | "彼得" : ["伯多祿", "彼多祿"], 235 | "約翰" : ["若望"], 236 | "腓利" : ["斐理伯"], 237 | "多馬" : ["多默"], 238 | "馬太" : ["瑪竇"], 239 | "亞勒腓" : ["阿爾斐"], 240 | "西門" : ["西滿"], 241 | "西庇太" : ["載伯德"], 242 | "馬提亞" : [ "瑪弟亞"], 243 | "亞迦布" : [], 244 | "該亞法" : [], 245 | "司提反" : [], 246 | "亞拿尼亞" : [], 247 | "亞那" : [], 248 | "安提帕" : [], 249 | "亞波羅" : [], 250 | "亞居拉" : [], 251 | "亞基布" : [], 252 | "亞古士督": [], 253 | "巴拿巴" : [], 254 | "巴拉巴" : [], 255 | "巴撒巴" : [], 256 | "巴底買" : [], 257 | "呂西亞" : [], 258 | "革流巴" : [], 259 | "哥尼流" : [], 260 | "基立司布" : [], 261 | "底馬" : [], 262 | "底米丟" : [], 263 | "丟尼修" : [], 264 | "丟特腓" : [], 265 | "以巴弗提" : [], 266 | "腓力斯" : [], 267 | "福徒拿都" : [], 268 | "該猶" : [], 269 | "迦流" : [], 270 | "迦瑪列" : ["迦瑪烈", "嘉瑪烈"], 271 | "睚魯" : [], 272 | "馬勒古" : [], 273 | "尼哥底母" : [], 274 | "阿尼西母" : [], 275 | "阿尼色弗" : [], 276 | "腓利門" : [], 277 | "腓理徒" : [], 278 | "部百流" : [], 279 | "魯孚" : [], 280 | "士求保羅" : [], 281 | "西拉" : [], 282 | "西面" : [], 283 | "特羅非摩" : [], 284 | "推基古" : [], 285 | "推喇奴" : [], 286 | "撒該" : [], 287 | "尼迦娜" : [], 288 | "多加" : ["大比大"], 289 | "以利沙伯" : [], 290 | "友尼基" : [], 291 | "非比" : [], 292 | "百基拉" : [], 293 | "革來氏" : [], 294 | "干大基" : [], 295 | "羅以" : [], 296 | "呂底亞" : [], 297 | "彼息氏" : [], 298 | "羅大" : [], 299 | "撒羅米" : [], 300 | "撒非喇" : [], 301 | "士基瓦" : [], 302 | "百居拉" : [] 303 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_MLB_Teams.json: -------------------------------------------------------------------------------- 1 | { 2 | "亞特蘭大勇士隊":["亞特蘭大勇士", "勇士隊", "勇士"], 3 | "邁阿密馬林魚隊":["邁阿密馬林魚", "馬林魚隊", "馬林魚"], 4 | "紐約大都會隊":["紐約大都會", "大都會隊", "大都會"], 5 | "費城費城人隊":["費城費城人", "費城人隊", "費城人"], 6 | "華盛頓國民隊":["華盛頓國民", "國民隊", "國民"], 7 | "芝加哥小熊隊":["芝加哥小熊", "小熊隊", "小熊"], 8 | "辛辛那提紅人隊":["辛辛那提紅人", "紅人隊", "紅人"], 9 | "密爾瓦基釀酒人隊":["密爾瓦基釀酒人", "釀酒人隊", "釀酒人"], 10 | "匹茲堡海盜隊":["匹茲堡海盜", "海盜隊", "海盜"], 11 | "聖路易紅雀隊":["聖路易紅雀", "紅雀隊", "紅雀"], 12 | "亞利桑那響尾蛇隊":["亞利桑那響尾蛇", "響尾蛇隊", "響尾蛇"], 13 | "科羅拉多落磯隊":["科羅拉多落磯", "落磯隊", "落磯"], 14 | "洛杉磯道奇隊":["洛杉磯道奇", "道奇隊", "道奇"], 15 | "聖地牙哥教士隊":["聖地牙哥教士", "教士隊", "教士"], 16 | "舊金山巨人隊":["舊金山巨人", "巨人隊", "巨人"], 17 | "巴爾的摩金鶯隊":["巴爾的摩金鶯", "金鶯隊", "金鶯"], 18 | "波士頓紅襪隊":["波士頓紅襪", "紅襪隊", "紅襪"], 19 | "紐約洋基隊":["紐約洋基", "洋基隊", "洋基"], 20 | "坦帕灣光芒隊":["坦帕灣光芒", "光芒隊", "光芒"], 21 | "多倫多藍鳥隊":["多倫多藍鳥", "藍鳥隊", "藍鳥"], 22 | "芝加哥白襪隊":["芝加哥白襪","白襪隊", "白襪"], 23 | "克里夫蘭印地安人隊":["克里夫蘭印地安人", "印地安人隊", "印地安人"], 24 | "底特律老虎隊":["底特律老虎", "老虎隊", "老虎"], 25 | "堪薩斯市皇家隊":["堪薩斯市皇家", "皇家隊", "皇家"], 26 | "明尼蘇達雙城隊":["明尼蘇達雙城", "雙城隊", "雙城"], 27 | "休士頓太空人隊":["休士頓太空人", "太空人隊", "太空人"], 28 | "洛杉磯天使隊":["洛杉磯天使", "天使隊", "天使"], 29 | "奧克蘭運動家隊":["奧克蘭運動家", "運動家隊", "運動家"], 30 | "西雅圖水手隊":["西雅圖水手", "水手隊", "水手"], 31 | "德州遊騎兵隊":["德州遊騎兵", "遊騎兵隊", "遊騎兵"] 32 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_NBA_Teams.json: -------------------------------------------------------------------------------- 1 | { 2 | "波士頓塞爾特人":["波士頓塞爾特人隊", "塞爾特人", "塞爾特人隊", "波士頓塞爾蒂克隊", "塞爾蒂克隊"], 3 | "達拉斯小牛":[ "達拉斯小牛隊", "小牛", "小牛隊", "達拉斯獨行俠隊", "獨行俠隊"], 4 | "邁亞密熱火":["邁亞密熱火隊", "熱火", "熱火隊"], 5 | "丹佛金塊":["丹佛金塊隊", "金塊", "金塊隊"], 6 | "新澤西籃網":["新澤西籃網隊", "籃網", "籃網隊", "布魯克林籃網隊", "紐澤西籃網隊"], 7 | "侯斯頓火箭":["侯斯頓火箭隊", "火箭", "火箭隊", "休士頓火箭隊", "休士頓火箭"], 8 | "紐約人":["紐約人隊", "紐約尼克隊", "紐約尼克"], 9 | "明尼蘇達木狼":["明尼蘇達木狼隊", "木狼", "木狼隊", "明尼蘇達灰狼隊", "灰狼隊"], 10 | "奧蘭多魔術":["奧蘭多魔術隊", "魔術", "魔術隊"], 11 | "聖安東尼奧馬刺":["聖安東尼奧馬刺隊", "馬刺", "馬刺隊"], 12 | "費城七十六人":["費城七十六人隊", "七十六人", "七六人", "七十六人隊", "七六人隊", "費城76人隊", "76人隊"], 13 | "猶他爵士":["猶他爵士隊", "爵士", "爵士隊"], 14 | "華盛頓巫師":["華盛頓巫師隊", "巫師", "巫師隊"], 15 | "孟菲斯灰熊":["孟菲斯灰熊隊", "灰熊", "灰熊隊", "曼斐斯灰熊隊"], 16 | "阿特蘭大鷹":["阿特蘭大鷹隊", "鷹隊", "亞特蘭大老鷹", "亞特蘭大老鷹隊", "老鷹隊"], 17 | "金州勇士":["金州勇士隊", "勇士", "勇士隊"], 18 | "夏洛特山貓":["夏洛特山貓隊", "山貓", "山貓隊", "夏洛特黃蜂隊"], 19 | "洛杉磯快艇":["洛杉磯快艇隊", "快艇", "快艇隊"], 20 | "芝加哥公牛":["芝加哥公牛隊", "公牛", "公牛隊"], 21 | "洛杉磯湖人":["洛杉磯湖人隊", "湖人", "湖人隊"], 22 | "克里夫蘭騎士":["克里夫蘭騎士隊", "騎士", "騎士隊"], 23 | "鳳凰城太陽":["鳳凰城太陽隊", "太陽", "太陽隊"], 24 | "底特律活塞":["底特律活塞隊", "活塞", "活塞隊"], 25 | "波特蘭拓荒者":["波特蘭拓荒者隊", "拓荒者", "拓荒者隊"], 26 | "印第安納溜馬":["印第安納溜馬隊", "溜馬", "溜馬隊", "印第安那溜馬隊"], 27 | "薩克拉門托帝王":["薩克拉門托帝王隊", "帝王", "帝王隊", "沙加緬度國王隊", "國王隊"], 28 | "密爾沃基公鹿":["密爾沃基公鹿隊", "公鹿", "公鹿隊", "密爾瓦基公鹿隊"], 29 | "奧克拉荷馬雷霆":["奧克拉荷馬雷霆隊", "雷霆", "雷霆隊"], 30 | "多倫多速龍":["多倫多速龍隊", "速龍", "速龍隊", "多倫多暴龍隊", "暴龍隊"], 31 | "新奧爾良黃蜂":["新奧爾良黃蜂隊", "黃蜂", "黃蜂隊", "紐奧良黃蜂隊", "紐奧良鵜鶘隊", "鵜鶘隊"] 32 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_NCDRTW.json: -------------------------------------------------------------------------------- 1 | { 2 | "人為災害":["人禍", "Manmade disasters", "manmade disasters"], 3 | "土地使用管理":["Land use management", "land use management"], 4 | "土砂運移":["Sediment transport", "sediment transport"], 5 | "大規模崩塌災害":["Large-scale landslide disaster", "large-scale landslide disaster"], 6 | "中央災害防救會報":["Central disaster prevention and response council", "central disaster prevention and response council"], 7 | "中央災害應變中心情資研判":["Central emergency operation center information assessment", "central emergency operation center information assessment"], 8 | "中央管及縣市管河川":["River administered by central and local government", "river administered by central and local government"], 9 | "天然災害年鑑":["Almanac of natural disasters", "almanac of natural disasters"], 10 | "水文氣象危害":["水災", "Hydrometeorogical hazards", "hydrometeorogical hazards"], 11 | "全災害管理":["All hazards approach", "all hazards approach"], 12 | "全球地震模式":["Global earthquake model", "global earthquake model"], 13 | "危害":["Hazard", "hazard"], 14 | "危害事件":["Hazarous event", "hazarous event"], 15 | "危機處理規劃":["Contingency planning", "contingency planning"], 16 | "地層下陷":["Land subsidence", "land subsidence"], 17 | "地質或地球物理危害":["Geological or geophsical hazards", "geological or geophsical hazards"], 18 | "多種危害":["Multi-harzard", "multi-harzard"], 19 | "早期告警系統":["Early warning system", "early warning system"], 20 | "行政院災害防救應用科技方案":["The Executive Yuan Program on Applying Science and Technology for Disaster Reduction"], 21 | "利害關係者":["Stakeholder", "stakeholder"], 22 | "技術性危害":["Technological hazards", "technological hazards"], 23 | "改造":["Retrofitting", "retrofitting"], 24 | "更好的重建":["重建地更好", "Build back better", "build back better"], 25 | "災害":["Disaster", "disaster"], 26 | "災害事件簿":["Disaster event notes", "disaster event notes"], 27 | "災害性天氣":["Disastrous weather", "disastrous weather"], 28 | "災害風險":["Disaster risk", "disaster risk"], 29 | "災害風險地圖":["Disaster risk map", "disaster risk map"], 30 | "災害風險評估":["Disaster risk assessment", "disaster risk assessment"], 31 | "災害風險資訊":["Disaster risk information", "disaster risk information"], 32 | "災害風險管理":["Disaster risk management", "disaster risk management"], 33 | "災害情資服務平台":["Disaster information service platform", "disaster information service platform"], 34 | "災害韌性":["回復力", "抗災力", "Resilience", "resilience"], 35 | "災害損失":["Disaster damage", "disaster damage"], 36 | "災害管理":["Disaster management", "disaster management"], 37 | "災害影響":["Disaster impact", "disaster impact"], 38 | "災害潛勢地圖":["Disaster potential maps", "disaster potential maps"], 39 | "防洪保護標準":["Flood protecting standard", "flood protecting standard"], 40 | "坡地災害風險地圖":["Landslide disaster risk map", "landslide disaster risk map"], 41 | "坡地災害規模":["Landslide disaster magnitude", "landslide disaster magnitude"], 42 | "坡地災害資料庫":["Historical landslide disaster records database"], 43 | "坡地災害預警":["Forecasting and warning of landslide disaster"], 44 | "坡地災害警戒雨量值":["Rainfall threshold value for landslide disaster warning"], 45 | "奈洛比工作計畫":["Nairobi Working Programme (NWP)"], 46 | "易致災區域":["Disaster-prone areas"], 47 | "直接經濟損失":["Direct economic loss"], 48 | "社區災害風險管理":["Community-based disaster risk management"], 49 | "非工程方法":["Non-engineering approach"], 50 | "建築規範":["Building code"], 51 | "恢復":["Rehabilitation"], 52 | "持續營運計畫":["Business Continuity Planning (BCP)"], 53 | "流出抑制設施":["Outflow suppression facilities"], 54 | "重建":["Reconstruction"], 55 | "風險":["Risk"], 56 | "風險分析":["Risk analysis"], 57 | "風險知覺與風險溝通":["Risk perception & Risk communication"], 58 | "風險轉移":["Risk transfer"], 59 | "容受力":["承受力", "Capacity"], 60 | "氣候變遷災害風險調適平台":["Climate Change Disaster Risk and Adaptation Platform"], 61 | "氣候變遷坡地災害風險評估":["Assessment to climate change-related landslide risks"], 62 | "氣候變遷乾旱災害風險評估":["Assessment to climate change-related drought risks"], 63 | "氣候變遷推估":["Climate change projection"], 64 | "氣候變遷淹水災害風險評估":["Assessment to climate change-related flood risks"], 65 | "氣候變遷調適":["Climate Change Adaptation (CCA)"], 66 | "氣象水文災害":["Hydrometeorological disaster"], 67 | "脆弱性":["社會脆弱性", "Vulnerability/Social vulnerability"], 68 | "脆弱度":["Vulnerability"], 69 | "能力發展":["Capacity development"], 70 | "能力評估":["承受力評估", "Capacity assessment"], 71 | "動力降尺度":["Dynamic downscale"], 72 | "區域震源":["Regional source"], 73 | "國土資訊系統災害防救應用推廣分組":["Application promotion group for disaster reduction of the national geographic information system"], 74 | "強震即時警報":["Earthquake early warning"], 75 | "淹水兵棋圖台":["Wargame simulation system for flooding"], 76 | "淹水潛勢":["Inundation potential"], 77 | "疏洪道":["Floodway"], 78 | "疏散":["Evacuation"], 79 | "統計降尺度":["Statistical downscale"], 80 | "設施相依性":["Infrastructure interdependency"], 81 | "剩餘風險":["Residual risk"], 82 | "堰塞湖":["天然壩", "Quake lake"], 83 | "復原":["Recovery"], 84 | "普遍型災害風險":["Extensive disaster risk"], 85 | "減少災害風險":["Disaster risk reduction"], 86 | "減災":["Mitigation"], 87 | "結構性和非結構性措施":["Structural and non-structural measures"], 88 | "間接經濟損失":["Indirect economic loss"], 89 | "集中型災害風險":["Intensive disaster risk"], 90 | "韌性":["Resilience"], 91 | "經濟損失":["Economic loss"], 92 | "預防":["Prevention"], 93 | "綜合流域治理":["Comprehensive river basin management"], 94 | "緊急狀況":["Emergency"], 95 | "緊急製圖":["Emergency mapping"], 96 | "緊急應變中心":["災害應變中心", "Emergency Operation Center", "EOC"], 97 | "緊急避難所":["收容所", "防災公園", "Emergency shelter", "Temporary shelter", "Disaster prevention park"], 98 | "臺灣氣候變遷推估資訊與調適知識平台計畫":["Taiwan Climate Change Projection Information and Adatation Knowledge Platform Project (TCCIP)"], 99 | "影響":["Affect"], 100 | "暴潮":["Storm surge"], 101 | "暴露度":["Exposure"], 102 | "潛在災害風險因子":["Underlying disaster risk drivers"], 103 | "複合性災害預警系統":["Multi-hazard early warning systems"], 104 | "調洪沈砂池":["Detention grit chamber"], 105 | "整備":["Preparedness"], 106 | "整備計畫":["Preparedness plan"], 107 | "應對能力":["Coping capacity"], 108 | "應變":["Response"], 109 | "應變管理":["Emergency management"], 110 | "環境弱化":["Environmental hazards"], 111 | "斷層震源":["Fault source"], 112 | "關鍵基礎設施":["Critical infrastructure"] 113 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_NativeTaiwaneseName.json: -------------------------------------------------------------------------------- 1 | { 2 | "Adao": [], 3 | "Aljenljeng": [], 4 | "Ahuan": [], 5 | "Akatuang": [], 6 | "Alak": [], 7 | "Amachat": [], 8 | "Amite": [], 9 | "Aoubei": [], 10 | "Aslamie": [], 11 | "Auli":[], 12 | "Badou": [], 13 | "Badu": [], 14 | "Bajila": [], 15 | "Bakah": [], 16 | "Balaw": [], 17 | "Baliwakesi": [], 18 | "Baluer": [], 19 | "Banai": [], 20 | "Banuaz": [], 21 | "Batu": [], 22 | "Bavaragh": [], 23 | "Biung": [], 24 | "Blubluone": [], 25 | "Boya": [], 26 | "Bulaw": [], 27 | "Buya": [], 28 | "Camachat": [], 29 | "Cudado": [], 30 | "Daduo": [], 31 | "Dagalomai": [], 32 | "Dakis": [], 33 | "Dalifu": [], 34 | "Danapan": [], 35 | "Dangalo": [], 36 | "Daniiv": [], 37 | "Dayisi": [], 38 | "Dika": [], 39 | "Dungy": [], 40 | "Eki": [], 41 | "Ganaen": [], 42 | "Gaolu": [], 43 | "Giljegiljaw": [], 44 | "Gulilai": [], 45 | "Hayong": [], 46 | "Huosilumanfafa": [], 47 | "Huysin": [], 48 | "Ibay": [], 49 | "Icep": [], 50 | "Icyang": [], 51 | "Kacaw": [], 52 | "Kaisanan": [], 53 | "Kanapaniana": [], 54 | "Kanasaw": [], 55 | "Kaujong": [], 56 | "Kilang": [], 57 | "Kingzi": [], 58 | "Kolas": [], 59 | "Kulilay": [], 60 | "KumudPazik": [], 61 | "Kunay": [], 62 | "Kungkuan": [], 63 | "Kusui": [], 64 | "Laheizi": [], 65 | "Lhkapamumu": [], 66 | "Lifok": [], 67 | "Lisin": [], 68 | "Ljegeay": [], 69 | "Lucia": [], 70 | "Ludao": [], 71 | "Matzka": [], 72 | "Maloe": [], 73 | "Mani": [], 74 | "Mavaliw": [], 75 | "Mayaw": [], 76 | "Meiming": [], 77 | "Minu": [], 78 | "Mona": [], 79 | "Nakao": [], 80 | "Nawi": [], 81 | "Nogan": [], 82 | "Nolay": [], 83 | "Omos": [], 84 | "Opay": [], 85 | "Oteng": [], 86 | "Pacidal": [], 87 | "Paelabang": [], 88 | "Paic": [], 89 | "Pani": [], 90 | "Panu": [], 91 | "Paong": [], 92 | "Parod": [], 93 | "Pasuya": [], 94 | "Pawan": [], 95 | "Perin": [], 96 | "Piho": [], 97 | "Poicon": [], 98 | "Purdur": [], 99 | "Rupeljengan": [], 100 | "Ruvaiwan": [], 101 | "Sakinu": [], 102 | "Salapuana": [], 103 | "Samingad": [], 104 | "Sawmah": [], 105 | "Saya": [], 106 | "Sayun": [], 107 | "Sela": [], 108 | "Shumien": [], 109 | "Siku": [], 110 | "Sising": [], 111 | "Sra": [], 112 | "Tak": [], 113 | "Talavan": [], 114 | "Temi": [], 115 | "Tiway": [], 116 | "Tjaluvie": [], 117 | "Tuku": [], 118 | "Tun": [], 119 | "Uma": [], 120 | "Umin": [], 121 | "Uyongu": [], 122 | "Uyungana": [], 123 | "Walis": [], 124 | "Walisi": [], 125 | "Weiji": [], 126 | "Yapasuyong": [], 127 | "Yata": [], 128 | "Yatauyungana": [], 129 | "Yibai": [], 130 | "Yide": [], 131 | "Yijiang": [], 132 | "Yinguyu": [], 133 | "Yinka": [], 134 | "Yishao": [], 135 | "Yisikakafute": [], 136 | "Yitidaousuo": [], 137 | "Yiyang": [], 138 | "Yiyong": [], 139 | "Yongai": [], 140 | "Yotaka": [], 141 | "Yougui": [], 142 | "Youhani": [], 143 | "Youming": [], 144 | "Yulunana": [], 145 | "Yuming": [], 146 | "Yurunana": [] 147 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_TaiwanMountains.json: -------------------------------------------------------------------------------- 1 | [ 2 | "三叉山", 3 | "三岔山", 4 | "三池山", 5 | "下躑躅山", 6 | "中央尖山", 7 | "中央尖山主峰", 8 | "中央尖山東峰", 9 | "中央尖山西峰", 10 | "中雪山", 11 | "中霸尖山", 12 | "丹大山", 13 | "丹大山主峰", 14 | "丹大山東峰", 15 | "九仙山", 16 | "九華山", 17 | "九華山主峰", 18 | "九華山西峰", 19 | "人待山", 20 | "伊巴厚山", 21 | "伊澤山", 22 | "佳陽山", 23 | "倫太文山", 24 | "僕落西擴山", 25 | "儲山", 26 | "光頭山", 27 | "內嶺爾山", 28 | "八通關山", 29 | "八通關山主峰", 30 | "八通關山東峰", 31 | "八通關山西峰", 32 | "六順山", 33 | "凱蘭特崑山", 34 | "凱蘭特崑山主峰", 35 | "凱蘭特崑山北峰", 36 | "劍南尖山", 37 | "劍山", 38 | "加利山", 39 | "加卑里山", 40 | "北可可爾博山", 41 | "北合歡山", 42 | "北大武山", 43 | "北畢祿山", 44 | "北碧綠山", 45 | "北面山", 46 | "匹匹達山", 47 | "十八尖山", 48 | "卑南主山", 49 | "卑南主山主峰", 50 | "卑南主山北峰", 51 | "卑南主山南峰", 52 | "卑南主山東峰", 53 | "卑南主山西北峰", 54 | "卑南主山西峰", 55 | "卓社大山", 56 | "卓社大山東峰", 57 | "南十八尖山", 58 | "南大水窟山", 59 | "南湖北山", 60 | "南湖大山", 61 | "南湖大山中南峰", 62 | "南湖大山主峰", 63 | "南湖大山北峰", 64 | "南湖大山南峰", 65 | "南湖大山東北峰", 66 | "南湖大山東南峰", 67 | "南湖大山東峰", 68 | "南玉山", 69 | "南華山", 70 | "南雙頭山", 71 | "南雙頭山主峰", 72 | "南雙頭山東峰", 73 | "南馬洋山", 74 | "博可爾山", 75 | "博可爾山基點峰", 76 | "卡社大山", 77 | "卡羅樓山", 78 | "卡賀爾山", 79 | "可可爾博山", 80 | "可樂可樂安山", 81 | "可汗山", 82 | "可汗山主峰", 83 | "可汗山東峰", 84 | "合歡尖山", 85 | "合歡山", 86 | "合歡山主峰", 87 | "合歡山東峰", 88 | "向陽山", 89 | "向陽山北峰", 90 | "呂禮山", 91 | "呂禮山北峰", 92 | "品田山", 93 | "品田山主峰", 94 | "品田山前峰", 95 | "哈哈山", 96 | "喀拉業山", 97 | "喀西帕南山", 98 | "喀西帕南山主峰", 99 | "喀西帕南山北峰", 100 | "喀西帕南山北高坪", 101 | "喀西帕南山南峰", 102 | "喀西帕南山西峰", 103 | "基隆山", 104 | "塔比拉山", 105 | "塔芬山", 106 | "塔芬山主峰", 107 | "塔芬山南峰", 108 | "塔關山", 109 | "塞珂山", 110 | "境界山", 111 | "大分富士山", 112 | "大劍山", 113 | "大南山", 114 | "大南山主峰", 115 | "大南山北峰", 116 | "大水窟山", 117 | "大水窟山主峰", 118 | "大水窟山北峰", 119 | "大理石山", 120 | "大理石峰", 121 | "大石公山", 122 | "大雪山", 123 | "大雪山主峰", 124 | "大雪山北峰", 125 | "大雪山南峰", 126 | "大霸尖山", 127 | "天南克朗山", 128 | "天南可蘭山", 129 | "天宮堡壘山", 130 | "太魯那斯山", 131 | "太魯閣大山", 132 | "太魯閣大山主峰", 133 | "太魯閣大山西峰", 134 | "奇峻山", 135 | "奇萊主山", 136 | "奇萊主山主峰", 137 | "奇萊主山北峰", 138 | "奇萊主山南南峰", 139 | "奇萊主山南峰", 140 | "奇萊主山東峰", 141 | "奇萊池山", 142 | "奇萊裡山", 143 | "宇達佩山", 144 | "安東崑山", 145 | "安東軍山", 146 | "安東軍山北峰", 147 | "審馬陣山", 148 | "對關山", 149 | "小劍山", 150 | "小南山", 151 | "小石公山", 152 | "小關山", 153 | "小關山主峰", 154 | "小關山北峰", 155 | "小雪山", 156 | "小霸尖山", 157 | "尖山", 158 | "屏風山", 159 | "屏風山中峰", 160 | "屏風山主峰", 161 | "屏風山南峰", 162 | "巴奈伊克山", 163 | "巴巴山", 164 | "巴巴山主峰", 165 | "巴巴山南峰", 166 | "巴沙灣山", 167 | "巴紗拉雲山", 168 | "巴都服山", 169 | "布伕奇寒山", 170 | "布干山", 171 | "布拉克桑山", 172 | "布秀蘭山", 173 | "布陳西崙山", 174 | "帕托魯山", 175 | "干卓萬山", 176 | "干卓萬山三叉峰", 177 | "干卓萬山三岔峰", 178 | "干卓萬山主峰", 179 | "干卓萬山東南峰", 180 | "庫哈諾辛山", 181 | "廬利拉駱山", 182 | "弓水山", 183 | "志佳陽大山", 184 | "志佳陽大山主峰", 185 | "志佳陽大山基點峰", 186 | "志摩山", 187 | "志摩山主峰", 188 | "志摩山西峰", 189 | "恐龍尖山", 190 | "拔托諾府山", 191 | "拾丸山", 192 | "新仙山", 193 | "新康山", 194 | "新達山", 195 | "新關山", 196 | "斷稜東山", 197 | "斷稜西山", 198 | "望台山", 199 | "望崖山", 200 | "望鄉山", 201 | "本鄉山", 202 | "本鄉山主峰", 203 | "本鄉山西峰", 204 | "東小南山", 205 | "東巒大山", 206 | "東郡大山", 207 | "東霸尖山", 208 | "林專山", 209 | "桃山", 210 | "樫山", 211 | "櫧山", 212 | "武法奈尾山", 213 | "池有山", 214 | "油婆蘭山", 215 | "治茆山", 216 | "海諾南山", 217 | "清水山", 218 | "清水山主峰", 219 | "清水山南峰", 220 | "溪頭山", 221 | "火石山", 222 | "烏可冬克山", 223 | "烏妹浪胖山", 224 | "烏妹浪胖山南峰", 225 | "烏拉孟山", 226 | "烏達佩山", 227 | "烏馬克冬山", 228 | "無明山", 229 | "無明山主峰", 230 | "無明山東峰", 231 | "無明山西峰", 232 | "無雙山", 233 | "無雙山主峰", 234 | "無雙山東峰", 235 | "牡丹山", 236 | "牡丹岩山", 237 | "牧山", 238 | "獅頭山", 239 | "玉山", 240 | "玉山主峰", 241 | "玉山前峰", 242 | "玉山北北峰", 243 | "玉山北峰", 244 | "玉山南山三叉峰", 245 | "玉山南峰", 246 | "玉山圓峰", 247 | "玉山小南山", 248 | "玉山東峰", 249 | "玉山西峰", 250 | "玉穗山", 251 | "甘木林山", 252 | "甘薯南峰", 253 | "甘薯峰", 254 | "畢祿山", 255 | "畢祿山主峰", 256 | "畢祿山南峰", 257 | "白姑大山", 258 | "白姑大山三叉峰", 259 | "白姑大山中峰", 260 | "白姑大山主峰", 261 | "白姑大山東南峰", 262 | "白姑大山東峰", 263 | "白姑大山西南峰", 264 | "白姑大山西峰", 265 | "白姑池山", 266 | "白狗大山", 267 | "白狗大山主峰", 268 | "白石山", 269 | "白石山主峰", 270 | "白石山東峰", 271 | "盧利拉駱山", 272 | "盧利拉駱山主峰", 273 | "盧利拉駱山西峰", 274 | "知馬漢山", 275 | "知馬漢山北峰", 276 | "石門山", 277 | "石門山主峰", 278 | "石門山北峰", 279 | "磐石山", 280 | "磐石山中峰", 281 | "磐石山主峰", 282 | "磐石山西峰", 283 | "秀姑巒山", 284 | "穆特勒布山", 285 | "立霧主山", 286 | "紅崖山", 287 | "紅崖山主峰", 288 | "紅崖山北峰", 289 | "紅葉山", 290 | "素密達山", 291 | "羊頭山", 292 | "美奈田主山", 293 | "義西請馬至山", 294 | "翠池三叉山", 295 | "翠池三岔山", 296 | "翠池山", 297 | "耶巴奧山", 298 | "能高山", 299 | "能高山主峰", 300 | "能高山北峰", 301 | "能高山南峰", 302 | "舞樂山", 303 | "舞樂山主峰", 304 | "舞樂山基點峰", 305 | "茶岩山", 306 | "萬東山", 307 | "萬東山西峰", 308 | "虎頭山", 309 | "裡門山", 310 | "西合歡山", 311 | "西巒大山", 312 | "西巴都蘭山", 313 | "觀高山", 314 | "詩崙山", 315 | "躑躅山", 316 | "轆轆山", 317 | "轆轆山主峰", 318 | "轆轆山南峰", 319 | "轆轆山東峰", 320 | "連理山", 321 | "連理山主峰", 322 | "連理山西峰", 323 | "達芬尖山", 324 | "達芬尖山主峰", 325 | "達芬尖山北峰", 326 | "達芬山", 327 | "達芬山主峰", 328 | "郡北山", 329 | "郡坑山", 330 | "郡大山", 331 | "郡大山主峰", 332 | "郡大山北峰", 333 | "郡東山", 334 | "金子山", 335 | "金子山東峰", 336 | "釜碗山", 337 | "釜碗山主峰", 338 | "釜碗山西峰", 339 | "鈴鳴山", 340 | "鋸山", 341 | "鋸山主峰", 342 | "鋸山東峰", 343 | "閂山", 344 | "關山", 345 | "關山主峰", 346 | "關山北峰", 347 | "關山嶺山", 348 | "關門山", 349 | "關門山主峰", 350 | "關門山北峰", 351 | "關門山西峰", 352 | "阿尾那來山", 353 | "阿屘那來山", 354 | "阿巴拉山", 355 | "阿波蘭山", 356 | "陶塞山", 357 | "陶塞峰", 358 | "雙子山", 359 | "雙子山基點峰", 360 | "雪山", 361 | "雪山主峰", 362 | "雪山北峰", 363 | "雪山北稜角", 364 | "雪山南峰", 365 | "雪山東峰", 366 | "雪山西南峰", 367 | "雪山西峰", 368 | "雪山西峰基點峰", 369 | "雲峰", 370 | "雲峰中峰", 371 | "雲峰東北峰", 372 | "雲峰東峰", 373 | "雲水山", 374 | "頭鷹山", 375 | "頭鷹山主峰", 376 | "頭鷹山北峰", 377 | "馬乃可山", 378 | "馬利加南山", 379 | "馬利加南山北峰", 380 | "馬利加南山東峰", 381 | "馬博拉斯山", 382 | "馬比杉山", 383 | "馬特蘭山", 384 | "馬西山", 385 | "馬西山主峰", 386 | "馬西山北峰", 387 | "馬西山南峰", 388 | "馬西巴秀山", 389 | "馬路巴拉讓山", 390 | "馬路巴拉讓山主峰", 391 | "馬路巴拉讓山西峰", 392 | "馬里亞文路山", 393 | "馬里亞文路山主峰", 394 | "馬里亞文路山北峰", 395 | "馬里亞文路山東峰", 396 | "駒盆山", 397 | "駒盆山中峰", 398 | "駒盆山主峰", 399 | "駒盆山南峰", 400 | "鬼門關山", 401 | "鬼門關峰", 402 | "魔保來山", 403 | "魔葉名病山", 404 | "鷹子嘴山", 405 | "鹿山", 406 | "黃當擴山", 407 | "黃當擴山中峰", 408 | "黃當擴山主峰", 409 | "黃當擴山南峰", 410 | "黑岩山", 411 | "東港山", 412 | "角板山" 413 | ] 414 | -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_TaiwanTVChannel.json: -------------------------------------------------------------------------------- 1 | { 2 | "台視主頻":["台視"], 3 | "台視新聞台":[], 4 | "台視財經台":[], 5 | "台視綜合台":[], 6 | "中視主頻":["中視"], 7 | "中視新聞台":[], 8 | "中視經典台":[], 9 | "中視菁采台":[], 10 | "華視主頻":["華視"], 11 | "華視教育體育文化台":[], 12 | "華視新聞資訊台":[], 13 | "國會頻道1台":["國會頻道 1 台"], 14 | "國會頻道2台":["國會頻道 2 台"], 15 | "民視無線台":["民視"], 16 | "民視第一台":[], 17 | "民視新聞台":[], 18 | "民視台灣台":[], 19 | "公視主頻":["公視"], 20 | "公視台語台":[], 21 | "公視3台":["公視 3 台"], 22 | "客家電視台":[], 23 | "原住民族電視台":["原民台"], 24 | "人間衛視":[], 25 | "大愛":[], 26 | "大愛二台":[], 27 | "霹靂台灣台":[], 28 | "LS TIME電影台":["LS TIME 電影台"], 29 | "好消息衛星電視台":[], 30 | "好消息二台":[], 31 | "MOMO購物1台":["MOMO購物 1 台", "MOMO 購物1台", "MOMO 購物 1 台", "MOMO 台", "MOMO 購物台", "MOMO台", "MOMO購物台"], 32 | "MOMO購物2台":["MOMO購物 1 台", "MOMO 購物2台", "MOMO 購物 2 台"], 33 | "八大第一台":[], 34 | "八大綜合台":[], 35 | "八大戲劇台":[], 36 | "八大優頻道":[], 37 | "八大娛樂台":[], 38 | "三立台灣台":["三立電視台", "三立電視"], 39 | "三立都會台":[], 40 | "三立新聞台":["三立新聞"], 41 | "三立國際台":[], 42 | "三立iNEWS":["三立 iNEWS"], 43 | "三立戲劇台":[], 44 | "三立綜合台":[], 45 | "MTV":["音樂電視網"], 46 | "東森綜合台":["東森台"], 47 | "東森新聞台":["東森新聞", "陰森新聞台", "陰森新聞"], 48 | "東森財經新聞台":[], 49 | "東森電影台":["東森電影"], 50 | "東森戲劇台":["東森戲劇"], 51 | "東森幼幼台":["東森幼幼", "幼幼台", "陰森幼幼", "陰森幼幼台"], 52 | "東森洋片台":["東森洋片"], 53 | "東森亞洲衛視台":[], 54 | "東森亞洲新聞台":[], 55 | "東森亞洲幼幼台":[], 56 | "東森衛視台":[], 57 | "東森超級美東台":[], 58 | "東森美洲新聞台":[], 59 | "東森美洲幼幼台":[], 60 | "東森美洲戲劇台":[], 61 | "東森中國台":[], 62 | "東森財經台":[], 63 | "超視美洲62.6無線台":["超視", "超視無線", "超視無線台"], 64 | "東森超視":[], 65 | "ETtoday綜合台":["ETtoday", "ETtoday 綜合台"], 66 | "ETtoday財經台":["ETtoday 財經台"], 67 | "東森購物1台":["東森購物 1 台", "陰森購物 1 台", "陰森購物台", "陰森購物" ], 68 | "東森購物2台":["東森購物 2 台", "陰森購物1台", "陰森購物 1 台"], 69 | "東森購物3台":["東森購物 3 台", "陰森購物2台", "陰森購物 2 台"], 70 | "東森購物4台":["東森購物 4 台", "陰森購物3台", "陰森購物 3 台"], 71 | "東森購物5台":["東森購物 5 台", "陰森購物4台", "陰森購物 4 台"], 72 | "高點綜合台":[], 73 | "高點育樂台":[], 74 | "年代新聞台":["年代新聞"], 75 | "年代MUCH台":["年代 MUCH 台"], 76 | "年代國際台":[], 77 | "壹電視綜合台":["壹電視"], 78 | "壹電視新聞台":[], 79 | "壹電視電影台":[], 80 | "中天綜合台":["中天台"], 81 | "中天娛樂台":[], 82 | "中天亞洲台":[], 83 | "中天頻道":[], 84 | "中天新聞台":[], 85 | "中天綜藝台":[], 86 | "TVBS":[], 87 | "TVBS歡樂台":["TVBS 歡樂台"], 88 | "TVBS新聞台":["TVBS 新聞台", "TVBS 新聞"], 89 | "TVBS-ASIA":[], 90 | "TVBS精采台":[], 91 | "非凡新聞台":["非凡新聞"], 92 | "非凡商業台":["非凡商業"], 93 | "好萊塢電影台":[], 94 | "緯來日本台":["緯來日本"], 95 | "緯來體育台":["緯來體育"], 96 | "緯來綜合台":[], 97 | "緯來育樂台":[], 98 | "緯來戲劇台":[], 99 | "緯來電影台":[], 100 | "緯來精采台":[], 101 | "亞洲旅遊台":[], 102 | "亞洲綜合台":[], 103 | "美食星球":[], 104 | "Medici-arts": ["梅迪奇藝術頻道"], 105 | "博斯魅力台":[], 106 | "博斯網球台":[], 107 | "博斯無限台":[], 108 | "博斯無限二台":["博斯無限 2 台", "博斯無限2台"], 109 | "博斯運動一台":["博斯運動 1 台", "博斯運動1台"], 110 | "博斯運動二台":["博斯運動 2 台", "博斯運動2台"], 111 | "博斯高球一台":["博斯高球 1 台", "博斯高球1台"], 112 | "博斯高球二台":["博斯高球 2 台", "博斯高球2台"], 113 | "SMART知識台":[], 114 | "台灣戲劇台":[], 115 | "龍華動畫":[], 116 | "龍華戲劇":[], 117 | "龍華偶像":[], 118 | "龍華電影":["龍華電影台"], 119 | "龍華影劇":[], 120 | "龍華洋片":["龍華洋片台"], 121 | "龍華經典":[], 122 | "靖洋卡通台":["Nice Bingo"], 123 | "Nice TV":["靖天歡樂台"], 124 | "靖天綜合台":[], 125 | "靖天映畫台":[], 126 | "靖天電影台":["靖天電影"], 127 | "靖天育樂台":[], 128 | "靖天卡通台":[], 129 | "靖天資訊台":[], 130 | "靖天日本台":[], 131 | "靖天戲劇台":[], 132 | "靖洋戲劇台":[], 133 | "樂活頻道":[], 134 | "MY-KIDS TV":[], 135 | "Catch Play電影台":["Catch Play"], 136 | "視納華仁紀實台":[], 137 | "采昌影劇台":[], 138 | "華藝影劇台":[], 139 | "華藝台灣台":[], 140 | "華藝MBC綜合台":[], 141 | "智林體育台":[], 142 | "幸福空間居家台":[], 143 | "Z頻道":["Z 頻道"], 144 | "狼谷育樂台":[], 145 | "新唐人亞太台":["新唐人電視台"], 146 | "十方法界電視台":[], 147 | "佛衛電視慈悲台":[], 148 | "華藏衛星電視台":[], 149 | "世界衛星電視台":[], 150 | "生命電視台":[], 151 | "希望綜合台":[], 152 | "新天地民俗台":[], 153 | "天美麗電視台":[], 154 | "正德電視台":[], 155 | "台灣綜合台":[], 156 | "台灣藝術電視台":[], 157 | "双子衛視":[], 158 | "信大電視台":[], 159 | "番薯衛星電視台":[], 160 | "信吉衛星電視台":[], 161 | "天良衛星電視台":[], 162 | "大立電視台":[], 163 | "誠心電視台":[], 164 | "富立電視台":[], 165 | "全大電視台":[], 166 | "威達超舜生活台":[], 167 | "海豚綜合台":[], 168 | "唯心電視台":[], 169 | "冠軍電視台":[], 170 | "冠軍夢想台":[], 171 | "中台灣生活網":[], 172 | "A-One體育台":["A-One 體育台"], 173 | "HOT頻道":[], 174 | "Hi-PLAY": ["玩家頻道"], 175 | "彩虹E台":["彩虹台", "彩虹頻道"], 176 | "彩虹電影台":[], 177 | "LOOK TV":[], 178 | "松視1台":["松視 1 台"], 179 | "松視2台":["松視 2 台"], 180 | "松視3台":["松視 3 台"], 181 | "松視4台":["松視 4 台"], 182 | "驚豔成人電影台":[], 183 | "香蕉台":[], 184 | "WAKUWAKU JAPAN":[], 185 | "BBC World News": ["BBC世界新聞頻道", "BBC"], 186 | "BBC earth": ["BBC自然知性頻道"], 187 | "BBC Lifestyle": ["BBC生活風格頻道"], 188 | "CBeebies": ["幼兒育樂頻道"], 189 | "NHK World Premium": ["NHK世界台"], 190 | "NHK World": ["NHK新聞資訊台"], 191 | "東風衛視":["東風衛視台"], 192 | "衛視中文台":[], 193 | "衛視電影台":[], 194 | "STAR Movies GOLD": ["STAR Movies"], 195 | "星衛HD電影台": ["Star Movies HD", "星衛 HD 電影台", "星衛電視台", "星衛電影台"], 196 | "星衛娛樂台":[], 197 | "STAR World":[], 198 | "National Geographic": ["NGC", "國家地理頻道", "國家地理國際頻道"], 199 | "Nat Geo Wild HD": ["國家地理高畫質野生頻道"], 200 | "Baby TV":[], 201 | "CNN International": ["有線電視新聞網"], 202 | "Cartoon Network": ["卡通頻道"], 203 | "Warner TV":[], 204 | "Boomerang":[], 205 | "HBO":[], 206 | "Cinemax":[], 207 | "HBO HD":["HBO"], 208 | "HBO Signature": ["HBO原創巨獻"], 209 | "HBO Family": ["HBO溫馨家庭"], 210 | "HBO Hits": ["HBO強檔鉅獻"], 211 | "Discovery Channel": ["探索頻道"], 212 | "Animal Planet": ["動物星球頻道"], 213 | "TLC": ["Travel & Living Channel", "旅遊生活頻道"], 214 | "Discovery Asia":["Discovery"], 215 | "Discovery Science": ["Discovery 科學頻道"], 216 | "DMAX":[], 217 | "Eve":[], 218 | "Eurosport": ["歐洲體育台"], 219 | "Travel Channel":[], 220 | "AFN": ["Asian Food Network", "亞洲美食頻道"], 221 | "Food Network": ["美食頻道"], 222 | "HGTV": ["Home & Garden Television", "居家樂活"], 223 | "AXN":[], 224 | "Animax":[], 225 | "CNBC Asia": ["CNBC亞洲台"], 226 | "Nickelodeon Asia": ["尼克兒童頻道"], 227 | "Nick Jr.":[], 228 | "MTV Live HD":[], 229 | "Dreamworks":[], 230 | "TV5MONDE ASIE":[], 231 | "TV5MONDE Style HD":[], 232 | "FRANCE 24": ["法國24", "法國 24"], 233 | "DW": ["德國之聲"], 234 | "Euronews": ["歐洲新聞台"], 235 | "Al Jazeera": ["半島英語新聞台"], 236 | "Channel NewsAsia": ["亞洲新聞台"], 237 | "Arirang TV": ["阿里郎電視台"], 238 | "KLT-靖天國際台":[], 239 | "TFC": ["The Filipino Channel", "菲律賓頻道"], 240 | "Bloomberg Television": ["彭博電視"], 241 | "History": ["歷史頻道"], 242 | "Crime and Investigation Network": ["罪案偵緝頻道"], 243 | "HISTORY 2": ["歷史頻道2台", "歷史頻道 2 台"], 244 | "Lifetime":[], 245 | "DaVinci Learning": ["達文西頻道"], 246 | "Baby First": ["寶寶世界頻道"], 247 | "amc最愛電影":["amc 最愛電影", "amc"], 248 | "美亞電影台":[], 249 | "CinemaWorld":[], 250 | "Hits":[], 251 | "Luxe TV": ["奢華頻道"], 252 | "KMTV": ["韓國娛樂台"], 253 | "Classica": ["古典音樂台"], 254 | "Stingray CMusic":[], 255 | "Mezzo Live HD":[], 256 | "Trace Urban":[], 257 | "Trace Sport Stars":[], 258 | "Fashion TV": ["時尚頻道"], 259 | "Fashion One":[], 260 | "Eleven Sports體育1台":[], 261 | "Eleven Sports體育2台":[], 262 | "Eleven Sports Plus":[], 263 | "My Cinema Europe HD": ["我的歐洲電影"], 264 | "ABC Australia":[], 265 | "tvN":[], 266 | "ROCK Extreme":[], 267 | "ROCK Entertainment":[], 268 | "Love Nature 4K":[], 269 | "PET CLUB TV":[], 270 | "寰宇HD綜合台":["寰宇 HD 綜合台"], 271 | "寰宇新聞台":[], 272 | "寰宇新聞台灣台":[], 273 | "寰宇財經台":[], 274 | "VIVA TV 1台":["VIVA TV"], 275 | "美好2台":["美好 2 台"], 276 | "MY 101綜合台":["MY 101 綜合台"], 277 | "運通財經台":[], 278 | "JStar極限台電影頻道":["JStar 極限台電影頻道", "JStar極限台", "JStar 極限台"], 279 | "May Life 購物台":[], 280 | "K頻道":["K 頻道"], 281 | "Pandora Perfect HD": ["潘朵啦高畫質玩美台"], 282 | "Pandora Pink HD": ["潘朵啦高畫質粉紅台"], 283 | "三聖電視台":[], 284 | "i-Fun愛放動漫台":["i-Fun 愛放動漫台"], 285 | "曼迪日本台":[], 286 | "國興衛視":[], 287 | "SBN全球財經網頻道":["SBN 全球財經網頻道"], 288 | "MOMO綜合台":["MOMO 綜合台", "momo綜合台", "momo 綜合台"], 289 | "MOMO親子台":["MOMO 親子台", "momo親子台", "momo 親子台"], 290 | "ELTV生活英語台":["ELTV 生活英語台"], 291 | "影迷數位電影台":[], 292 | "影迷數位紀實台":[], 293 | "EYE TV 戲劇台":[], 294 | "EYE TV 旅遊台":[], 295 | "ELTA綜合台":["ELTA 綜合台"], 296 | "ELTA影劇台":["ELTA 影劇台"], 297 | "ELTA娛樂台":["ELTA 娛樂台"], 298 | "ELTA體育1台":["ELTA 體育1台", "ELTA 體育 1 台"], 299 | "ELTA體育2台":["ELTA 體育2台", "ELTA 體育 2 台"], 300 | "ELTA體育3台":["ELTA 體育3台", "ELTA 體育 3 台"], 301 | "滾動力 rollor":[], 302 | "JET綜合台":["JET 綜合台"], 303 | "靖天購物一台":[], 304 | "中投/雲林地方台":[], 305 | "永佳樂生活台":[], 306 | "觀天下地方台":[], 307 | "紅樹林新聞台":[], 308 | "鳳信TV":["鳳信 TV"], 309 | "聯禾有線鄉親頻道":[], 310 | "凱擘大台北生活頻道":[], 311 | "凱擘桃園台":[], 312 | "凱擘新竹台":[], 313 | "豐盟台中台":[], 314 | "豐盟綜合台":[], 315 | "凱擘彰化04":["凱擘彰化 04"], 316 | "凱擘南天台":[], 317 | "南瀛生活資訊台":[], 318 | "大新店生活台":[], 319 | "屏東生活台":[], 320 | "屏東/屏南資訊台":[], 321 | "吉隆生活":[], 322 | "台北都會頻道":[], 323 | "新北自製":[], 324 | "台南生活台":[], 325 | "高雄都會台":[], 326 | "悠遊台北台":[], 327 | "北都taipei台":["北都 taipei 台", "北都 Taipei 台"], 328 | "天外天地方台":[], 329 | "全國自製頻道":[], 330 | "大豐電視台":[], 331 | "新高雄電視台":[], 332 | "天天電視台":[], 333 | "天天購物台":[], 334 | "大台中生活台":[], 335 | "中部人文台":[], 336 | "TBC桃園生活台":["TBC 桃園生活台"], 337 | "TBC新竹生活台":["TBC 新竹生活台"], 338 | "TBC苗栗生活台":["TBC 苗栗生活台"], 339 | "TBC台中生活台":["TBC 台中生活台"], 340 | "TBC台中資訊台":["TBC 台中資訊台"], 341 | "樂視台":[], 342 | "新彰歡樂台":[], 343 | "新彰生活台":[], 344 | "彰化地方台":[], 345 | "彰化資訊台":[], 346 | "彰化綜合台":[], 347 | "三大一台":[], 348 | "大揚生活台":[], 349 | "大揚自製台":[], 350 | "世新綜合台":[], 351 | "大嘉義綜合電視台":[], 352 | "南瀛生活新聞":[], 353 | "紅豆1台":["紅豆 1 台"], 354 | "紅豆2台":["紅豆 2 台"], 355 | "大花蓮/台東綜合台":["花東綜合台"], 356 | "大花蓮/台東新聞台":["花東新聞台"], 357 | "澎湖地方台":[], 358 | "名城綜合台":[], 359 | "祥通地方台":[], 360 | "民視綜藝台":[], 361 | "民視影劇台":[], 362 | "民視旅遊台":[], 363 | "豬哥亮歌廳秀":[], 364 | "三立星綜藝":[], 365 | "公視戲劇台":[], 366 | "客家金選台":[], 367 | "東森兒童台":[], 368 | "東森娛樂台":[], 369 | "八大綜藝台":[], 370 | "八大精采台":[], 371 | "八大劇TV":["八大劇 TV"], 372 | "i-Fun愛放動漫2台":["i-Fun 愛放動漫 2 台"], 373 | "i-Fun愛放動漫3台":["i-Fun 愛放動漫 3 台"], 374 | "年代MUCH綜藝台":["年代 MUCH 綜藝台", "年代綜藝台", "年代綜藝"], 375 | "年代MUCH戲劇台":["年代 MUCH 戲劇台", "年代戲劇台", "年代戲劇"], 376 | "HLN": ["Headline News", "頭條新聞台"], 377 | "VOA TV": ["美國之音衛視"], 378 | "大新聞大爆卦":[], 379 | "GINX Esports TV":[], 380 | "TechStorm":[], 381 | "Smithsonian Channel":[] 382 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_WNBA_Teams.json: -------------------------------------------------------------------------------- 1 | { 2 | "亞特蘭大美夢":["亞特蘭大美夢隊", "美夢隊"], 3 | "芝加哥天空":["芝加哥天空隊", "天空隊"], 4 | "夏洛特狂蜂":["夏洛特狂蜂隊", "狂蜂隊", "狂蜂", "夏洛特螫針隊", "夏洛特螫針", "螫針隊"], 5 | "侯斯頓彗星":["侯斯頓彗星隊", "彗星隊", "彗星", "休斯頓彗星隊", "休斯頓彗星"], 6 | "底特律暴震":["底特律暴震隊", "暴震隊", "暴震", "達拉斯飛馬隊", "達拉斯飛馬", "飛馬隊"], 7 | "洛杉磯火花":["洛杉磯火花隊", "火花隊", "火花"], 8 | "印第安納狂熱":["印第安納狂熱隊", "狂熱隊", "狂熱"], 9 | "明尼蘇達山貓":["明尼蘇達山貓隊", "天貓隊", "天貓"], 10 | "紐約自由人":["紐約自由人隊", "自由人隊", "自由人"], 11 | "鳳凰城水星":["鳳凰城水星隊", "水星隊", "水星"], 12 | "康乃狄陽光":["康乃狄陽光隊", "陽光隊", "陽光"], 13 | "聖安東尼奧銀星":["聖安東尼奧銀星隊", "銀星隊", "銀星", "拉斯維加斯王牌隊", "拉斯維加斯王牌","王牌隊"], 14 | "華盛頓奇異":["華盛頓奇異隊", "奇異隊", "奇異", "華盛頓神秘", "神秘隊"], 15 | "薩克拉門托天王":["薩克拉門托天王隊", "天王隊", "天王", "沙加緬度女皇", "女皇隊"], 16 | "西雅圖暴風":["西雅圖暴風隊", "暴風隊", "暴風", "西雅圖風暴隊", "西雅圖風暴", "風暴隊"] 17 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_animeCharacters.json: -------------------------------------------------------------------------------- 1 | { 2 | "丁丁":[], 3 | "亞瑟 ":[], 4 | "傑利鼠":[], 5 | "凱蒂貓":[], 6 | "加菲貓":[], 7 | "史努比":[], 8 | "史迪奇":[], 9 | "咿唷":[], 10 | "哆拉A夢":[], 11 | "唐老鴨":[], 12 | "喜羊羊":[], 13 | "噴涕精":[], 14 | "大力士":[], 15 | "大力水手":[], 16 | "大嘴鳥":[], 17 | "大眼仔":[], 18 | "天線寶寶":[], 19 | "孫悟空":[], 20 | "害羞鬼":[], 21 | "小佛":[], 22 | "小天使":[], 23 | "小木偶":[], 24 | "小波":[], 25 | "小紅帽":[], 26 | "小美人魚":["愛麗兒"], 27 | "小豬":[], 28 | "小飛象":[], 29 | "小鹿班比":[], 30 | "尼莫":[], 31 | "娜娜":[], 32 | "辛巴":[], 33 | "巴斯光年":[], 34 | "布魯托":[], 35 | "布魯托 ":[], 36 | "彼得潘":[], 37 | "愛生氣":[], 38 | "愛麗絲":[], 39 | "拉拉":[], 40 | "拉拉熊":[], 41 | "朵拉":[], 42 | "梅林":[], 43 | "森林王子":[], 44 | "櫻桃小丸子":[], 45 | "毛怪":[], 46 | "泰山":[], 47 | "派大星":[], 48 | "海綿寶寶":[], 49 | "湯姆貓":[], 50 | "湯瑪士":[], 51 | "長髮公主":["樂佩"], 52 | "灰姑娘":["仙杜瑞拉"], 53 | "獅子王":[], 54 | "瑪莉貓":[], 55 | "白雪公主":[], 56 | "皮卡丘":[], 57 | "皮老闆":[], 58 | "睡美人":["奧蘿拉"], 59 | "瞌睡蟲":[], 60 | "神燈精靈":[], 61 | "章魚哥":[], 62 | "米奇":["米老鼠"], 63 | "米妮":[], 64 | "糊塗蛋":[], 65 | "維尼":[], 66 | "美人魚":[], 67 | "老皮":[], 68 | "泡泡糖公主":["PB"], 69 | "胡迪":[], 70 | "膽小狗":[], 71 | "花木蘭":[], 72 | "英雄":[], 73 | "萬事通":[], 74 | "蟹老闆":[], 75 | "跳跳虎":[], 76 | "迪西":[], 77 | "鐘樓怪人":[], 78 | "開心果":[], 79 | "阿基里斯":[], 80 | "阿寶":[], 81 | "阿拉丁":[], 82 | "飛哥":[], 83 | "高飛":[], 84 | "黛絲":[], 85 | "龍貓":[], 86 | "巴鮑伯":["鮑伯"], 87 | "巴荷莉":["荷莉"], 88 | "巴小倩":["小倩"], 89 | "巴小飛":["小飛"], 90 | "巴小傑":["小傑"], 91 | "酷冰俠":[], 92 | "衣夫人":[], 93 | "潘賽門":[], 94 | "狄瑞克":[], 95 | "幻影":[], 96 | "史諾":[], 97 | "戴文森":[], 98 | "梅仁愛":[], 99 | "亨先生":[], 100 | "雷湯尼":[], 101 | "馬凱莉":[], 102 | "辛拉登":[], 103 | "炸彈客":[], 104 | "採礦大師":[], 105 | "戴艾芙琳":[], 106 | "貝兒":[], 107 | "茉莉":[], 108 | "寶嘉康蒂":[], 109 | "莫娜":[], 110 | "安娜":[], 111 | "艾莎":[], 112 | "瑞克·桑切斯":["瑞克"], 113 | "莫蒂·史密斯":["莫蒂"], 114 | "貝絲·史密斯":["貝絲"], 115 | "傑瑞·史密斯":["傑瑞"], 116 | "桑美·史密斯":["桑美"], 117 | "捷戈":[], 118 | "屎蛋":[], 119 | "凱子":[], 120 | "阿ㄆㄧㄚˇ":[], 121 | "阿尼":[], 122 | "紫悦":[], 123 | "雲寶":[], 124 | "碧琪":[], 125 | "珍奇":[], 126 | "蘋果嘉兒":[], 127 | "柔柔":[], 128 | "穗龍":[] 129 | 130 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_artworks.json: -------------------------------------------------------------------------------- 1 | {"星夜": [], 2 | "格爾尼卡": [], 3 | "石洞壁畫": [], 4 | "奴隸船": [], 5 | "清明上河圖": [], 6 | "聖母領報": [], 7 | "步輦圖": [], 8 | "匡廬圖": [], 9 | "納涼": [], 10 | "玉山": [], 11 | "豐收": [], 12 | "郊遊": [], 13 | "清晨": [], 14 | "溪流": [], 15 | "指南宮": [], 16 | "楓樹林": [], 17 | "火雞": [], 18 | "小溪流水": [], 19 | "林蔭小憩": [], 20 | "杜伊勒里花園音樂會": [], 21 | "西斯廷聖母": [], 22 | "血竭": [], 23 | "康寶湯罐頭": [], 24 | "早春圖": [], 25 | "畫老子騎牛": [], 26 | "畫魚藻": [], 27 | "宋高宗坐像": [], 28 | "戲水": [], 29 | "水牛": [], 30 | "大福夫人肖像": [], 31 | "蒙娜麗莎": [], 32 | "吃馬鈴薯的人": [], 33 | "蛋彩畫": [], 34 | "夜巡": [], 35 | "冰果店": [], 36 | "春光": [], 37 | "屋頂花園": [], 38 | "小憩之女": [], 39 | "拾落葉的童年": [], 40 | "三峽春色": [], 41 | "黎明": [], 42 | "土城市沛坡村": [], 43 | "村莊": [], 44 | "裸女": [], 45 | "陳蘇儉女士肖像": [], 46 | "河邊洗衣": [], 47 | "錦色風光": [], 48 | "最後的晚餐": [], 49 | "草地上的午餐": [], 50 | "戴珍珠耳環的少女": [], 51 | "三博士來朝": [], 52 | "錦春圖": [], 53 | "歲朝圖": [], 54 | "秋實": [], 55 | "遠眺三峽": [], 56 | "奇萊春曉": [], 57 | "採茶少女": [], 58 | "秋苑": [], 59 | "烏鴉": [], 60 | "窗邊少女": [], 61 | "吳小姐肖像": [], 62 | "關原彩雲": [], 63 | "秋到樹梢": [], 64 | "假日閒情": [], 65 | "三峽春曉": [], 66 | "陳老夫人肖像": [], 67 | "牧場": [], 68 | "雨後秋色": [], 69 | "許博士夫人肖像": [], 70 | "宮女": [], 71 | "抱銀鼠的女子": [], 72 | "水墨畫": [], 73 | "隆河上的星夜": [], 74 | "列女仁智圖": [], 75 | "虢國夫人遊春圖": [], 76 | "畫瑞麅": [], 77 | "牡丹": [], 78 | "戲弄火雞的小孩": [], 79 | "蘇澳漁港": [], 80 | "李金印先生肖像": [], 81 | "墾丁初春": [], 82 | "午後河岸": [], 83 | "晴朗": [], 84 | "許鴻源博士伉儷": [], 85 | "日光初秋": [], 86 | "鏡前的維納斯": [], 87 | "基督受洗": [], 88 | "船上的午宴": [], 89 | "畫布": [], 90 | "雙喜圖": [], 91 | "百駿圖白描稿": [], 92 | "靜物": [], 93 | "秋苑藤椅素描": [], 94 | "李林粒女士": [], 95 | "編織": [], 96 | "太魯閣之四": [], 97 | "三峽清晨": [], 98 | "裸女畢業製作": [], 99 | "盛夏": [], 100 | "陳清源先生肖像": [], 101 | "裸體的馬哈": [], 102 | "赭色": [], 103 | "梅杜薩之筏": [], 104 | "印象·日出": [], 105 | "馬拉之死": [], 106 | "富春山居圖": [], 107 | "教宗英諾森十世像": [], 108 | "著衣的瑪哈": [], 109 | "萬壑鬆風圖": [], 110 | "仙山樓閣": [], 111 | "梳粧": [], 112 | "自畫像": [], 113 | "編物": [], 114 | "清溪浣衣": [], 115 | "黃昏": [], 116 | "日月潭": [], 117 | "佛門少女": [], 118 | "初夏": [], 119 | "農家少女": [], 120 | "淡水": [], 121 | "濱海風景": [], 122 | "志求高遠": [], 123 | "斗笠山": [], 124 | "裸女坐椅子": [], 125 | "露臺黃昏": [], 126 | "澎湖魚市": [], 127 | "蓮霧": [], 128 | "玫瑰花": [], 129 | "陳夫人肖像": [], 130 | "夜遊者": [], 131 | "維納斯的誕生": [], 132 | "雅典學院": [], 133 | "女史箴圖": [], 134 | "韓熙載夜宴圖": [], 135 | "山徑春行": [], 136 | "谿山行旅": [], 137 | "露臺": [], 138 | "春風": [], 139 | "屏前少女": [], 140 | "生命": [], 141 | "觀音山": [], 142 | "太魯閣之三": [], 143 | "紅衣": [], 144 | "花與女": [], 145 | "林太夫人月里女士畫像": []} -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_criminalLawTW.json: -------------------------------------------------------------------------------- 1 | { 2 | "檢察官":["prosecutor", "Prosecutor"], 3 | "公設辯護人":["public defender", "Public defender"], 4 | "嫌犯":["suspect", "Suspect"], 5 | "簡單搜身":["搜身", "frisk", "Frisk"], 6 | "搜索與扣押":["search and seizure", "Search and seizure"], 7 | "逮捕":["arrest", "Arrest"], 8 | "羈押":["detention", "Detention"], 9 | "看守所":["jail", "Jail"], 10 | "監獄":["prison", "Prison"], 11 | "起訴":["prosecute", "Prosecute"], 12 | "犯罪構成要件":["elements of crime", "Elements of crime"], 13 | "客觀構成要件":["客觀行為", "actus reus", "客観的構成要件", "der objektive Tatbestand", "Objective legal element of the offense", "objective legal element of the offense"],], 14 | "主觀構成要件":["主觀意思", "mens rea", "主観的構成要件", "der subjektive Tatbestand", "Subjective legal element of the offense", "subjective legal element of the offense"],], 15 | "重罪":["felony", "Felony"], 16 | "輕罪":["misdemeanor", "Misdemeanor"], 17 | "正犯":["perpetrator, principal", "Perpetrator, Principal"], 18 | "從犯":["accomplices, aiders and abettors", "Accomplices, Aiders and abettors"], 19 | "共同正犯":["co-perpetrators, joint-perpetrators", "Co-perpetrators, Joint-perpetrators"], 20 | "殺人罪":["homicide", "Homicide"], 21 | "一級謀殺罪":["冷血蓄謀殺人", "first degree murder", "First degree murder"], 22 | "二級謀殺罪":["其他之故意殺人", "second degree murder", "Second degree murder"], 23 | "非故意殺人":["involuntary manslaughter", "Involuntary manslaughter"], 24 | "傷害罪":["battery", "Battery"], 25 | "重傷罪":["mayhem", "Mayhem"], 26 | "強姦罪":["rape", "Rape"], 27 | "妨害自由罪":["false imprisonment", "False imprisonment"], 28 | "擄人勒索罪":["kidnapping", "Kidnapping"], 29 | "縱火罪":["arson", "Arson"], 30 | "侵入住宅偷竊罪":["burglary", "Burglary"], 31 | "竊盜罪":["larceny", "Larceny"], 32 | "強盜罪":["robbery", "Robbery"], 33 | "侵占罪":["embezzlement", "Embezzlement"], 34 | "偽造文書罪":["forgery", "Forgery"], 35 | "恐嚇罪":["extortion", "Extortion"], 36 | "通姦罪":["adultery", "Adultery"], 37 | "重婚罪":["bigamy", "Bigamy"], 38 | "血親相姦罪":["incest", "Incest"], 39 | "雞姦罪":["sodomy", "Sodomy"], 40 | "偽證罪":["perjury", "Perjury"], 41 | "教唆":["solicitation", "Solicitation"], 42 | "未遂":["attempted crimes", "Attempted crimes"], 43 | "共謀":["conspiracy", "Conspiracy"], 44 | "認罪協商":["plea bargain", "Plea bargain"], 45 | "大陪審團":["grand jury", "Grand jury"], 46 | "大陪審團起訴書":["indictment", "Indictment"], 47 | "保釋":["bail", "Bail"], 48 | "保釋金":["bailment、bond", "Bailment、Bond"], 49 | "承認":["認罪", "confession", "Confession"], 50 | "陪審團之有罪判決":["guilty verdict", "Guilty Verdict"], 51 | "無期徒刑":["life sentence", "Life Sentence"], 52 | "死刑":["capital punishment", "Capital Punishment"], 53 | "罰金":["fine, penalty", "Fine, Penalty"], 54 | "緩刑":["probation", "Probation"], 55 | "假釋":["parole", "Parole"], 56 | "特赦":["pardon", "Pardon"], 57 | "大赦":["amnesty", "Amnesty"], 58 | "消除刑事紀錄":["expunge", "Expunge"], 59 | "上訴":["appeal", "Appeal"], 60 | "上訴人":["appellant", "Appellant"], 61 | "被上訴人":["respondent", "Respondent"], 62 | "陳情":["聲請", "petition", "Petition"], 63 | "聲請人":["petitioner", "Petitioner"], 64 | "行為":["行為", "die Handlung", "Act", "act"], 65 | "作為":["作為", "das Tun", "Affirmative act", "affirmative act"], 66 | "加重構成要件":["加重構成要件", "der qualifizierte Tatbestand", "Aggravated legal element of the offense", "aggravated legal element of the offense"], 67 | "基本構成要件":["基本的構成要件", "der Grundtatbestand", "Basic legal element of the offense", "basic legal element of the offense"], 68 | "可非難性":["非難可能性", "die Vorwerfbarkeit", "Blameworthiness", "blameworthiness"], 69 | "因果關係":["因果関係", "die Kausalität", "Causation", "causation"], 70 | "己手犯":["親手犯", "自手犯", "das eigenhändige Delikt", "Crimes committed with one's own hand", "crimes committed with one's own hand"], 71 | "抽象危險犯":["抽象的危険犯", "das abstrakte Gefährdungsdelikt", "Crimes constituted by abstract endangerment of legal interests", "crimes constituted by abstract endangerment of legal interests"], 72 | "具體危險犯":["具体的危険犯", "das konkrete Gefährdungsdelikt", "Crimes constituted by concrete endangerment of legal interests", "crimes constituted by concrete endangerment of legal interests"], 73 | "危險犯":["危険犯", "das Gefährdungsdelikt", "Crimes constituted by endangerment of legal interests", "crimes constituted by endangerment of legal interests"], 74 | "實害犯":["侵害犯", "das Verletzungsdelikt", "Crimes constituted by violation of legal interests", "crimes constituted by violation of legal interests"], 75 | "作為犯":["作為犯", "das Begehungsdelikt", "Criminal offense committed by affirmative act", "criminal offense committed by affirmative act"], 76 | "故意犯":["故意犯", "das Vorsatzdelikt", "Criminal offense committed by intent", "criminal offense committed by intent"], 77 | "過失犯":["過失犯", "das Fahrlässigkeitsdelikt", "Criminal offense committed by negligence", "criminal offense committed by negligence"], 78 | "罪責":["有責性", "責任", "有責性", "die Schuld", "Culpability", "culpability"], 79 | "描述性構成要件要素":["記述的構成要件要素", "das deskriptive Tatbestandsmerkmal", "Descriptive legal elements of the offense", "descriptive legal elements of the offense"], 80 | "合法化構成要件":["正当化構成要件", "der Rechtfertigungstatbestand", "Element of legal justification", "element of legal justification"], 81 | "意志自由":["意思の自由", "die Willensfreiheit", "Free will", "free will"], 82 | "構成要件該當性":["構成要件該当性", "die Tatbestandsmäßigkeit", "Fulfillment of the legal elements of the offense", "fulfillment of the legal elements of the offense"], 83 | "純正身分犯":["真正身分犯", "das echte Sonderdelikt", "Genuine status offense", "genuine status offense"], 84 | "阻卻違法事由":["違法阻却事由", "正当化事由", "der Rechtfertigungsgrund", "Ground of legal justification", "ground of legal justification"], 85 | "故意":["故意", "der Vorsatz", "Intent", "intent"], 86 | "少年":["少年", "Jugendlich", "Juvenile", "juvenile"], 87 | "不法意識":["違法性意識", "違法性の意識", "das Unrechtsbewusstsein", "Knowldge of unlawfulness", "knowldge of unlawfulness"], 88 | "無責任能力":["責任無能力", "die Schuldunfähigkeit", "Lack of criminal responsibility", "lack of criminal responsibility"], 89 | "法益":["法益", "das Rechtsgut", "Legal interest", "legal interest"], 90 | "錯誤":["錯誤", "der Irrtum", "Mistake", "mistake"], 91 | "客體錯誤":["客体の錯誤", "der Irrum über Handlungsobjekt", "Mistake as to the identity of the victim/object", "mistake as to the identity of the victim/object"], 92 | "減輕構成要件":["減軽構成要件", "der privilegierte Tatbestand", "Mitigative legal element of the offense", "mitigative legal element of the offense"], 93 | "需罰性":["要罰性", "die Strafbedürftigkeit", "Necessity of punishment", "necessity of punishment"], 94 | "不純正身分犯":["不真正身分犯", "das unechte Sonderdelikt", "Non-genuine status offense", "non-genuine status offense"], 95 | "行為犯":["舉動犯", "行為犯", "挙動犯", "das Tätigkeitsdelikt", "Non-result constituted offenses", "non-result constituted offenses"], 96 | "不成文的構成要件要素":["書かれざる構成要件要素", "記述されざる構成要件要素", "das ungeschriebene Tatbestandsmerkmal", "Non-statutory elements of the offense", "non-statutory elements of the offense"], 97 | "規範性構成要件要素":["規範的構成要件要素", "das normative Tatbestandsmerkmal", "Normative legal elements of the offense", "normative legal elements of the offense"], 98 | "客觀處罰條件":["客觀可罰性條件", "客観的処罰条件", "die objektive Strafbarkeitsbedingung", "Objective condition for punishment", "objective condition for punishment"], 99 | "不作為":["不作為", "das Unterlassen", "Omission", "omission"], 100 | "明確性要求":["明確性の要請", "das Bestimmtheitsgebot", "Principle of clarity {Vagueness doctrine}", "principle of clarity {vagueness doctrine}"], 101 | "罪責原則":["責任主義", "das Schuldprinzip", "Principle of culpability", "principle of culpability"], 102 | "罪刑法定原則[主義]":["罪刑法定主義", "das Gesetzlichkeitsprinzip", "Principle of Legality", "principle of legality"], 103 | "類推禁止":["類推解釈の禁止", "das Analogieverbot", "Prohibition of analogy (of the law)", "prohibition of analogy (of the law)"], 104 | "習慣法禁止":["慣習法の排除", "das Gewohnheitsrechtsverbot", "Prohibition of customary law", "prohibition of customary law"], 105 | "溯及禁止":["遡及処罰の禁止", "das Rückwirkungsverbot", "Prohibition of retroactive criminalization (Prohibition of ex post facto law)", "prohibition of retroactive criminalization (prohibition of ex post facto law)"], 106 | "意圖":["意図", "die Absicht", "Purpose", "purpose"], 107 | "責任能力":["責任能力", "die Schuldfähigkeit", "Responsibility", "responsibility"], 108 | "結果犯":["結果犯", "das Erfolgsdelikt", "Result-constituted offenses", "result-constituted offenses"], 109 | "正當防衛":["正当防衛", "die Notwehr", "Self-Defense/Defense of others/Defense of Property", "self-defense/defense of others/defense of property"], 110 | "身分犯":["特別犯", "身分犯", "das Sonderdelikt", "Status offense", "status offense"], 111 | "容許規範":["許容規範", "die Erlaubnisnorm", "Statute of legal justification", "statute of legal justification"], 112 | "成文的構成要件要素":["条文に明記された構成要件要素", "das geschriebene Tatbestandsmerkmal", "Statutory elements of the offense", "statutory elements of the offense"], 113 | "限時法":["限時法", "das Zeitgesetz", "Temporary law", "temporary law"], 114 | "違法性":["違法性", "die Rechtswidrigkeit", "Unlawfulness", "unlawfulness"], 115 | "得罰性":["應罰性", "当罰性", "die Strafwürdigkeit", "Worthiness of punishment", "worthiness of punishment"] 116 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_currency.json: -------------------------------------------------------------------------------- 1 | { 2 | "蓋亞那元": [], 3 | "盧安達法郎": [ 4 | "法郎" 5 | ], 6 | "古巴可兌換披索": [ 7 | "古巴可兌換比索", 8 | "披索", 9 | "比索" 10 | ], 11 | "烏干達先令": [ 12 | "先令" 13 | ], 14 | "阿爾扎赫德拉姆": [ 15 | "德拉姆" 16 | ], 17 | "捷克克朗": [ 18 | "克朗" 19 | ], 20 | "圖格里克": [], 21 | "亞塞拜然馬納特": [ 22 | "馬納特" 23 | ], 24 | "安哥拉寬扎廣薩": [ 25 | "安哥拉廣薩", 26 | "寬扎" 27 | ], 28 | "馬來西亞令吉": [ 29 | "令吉" 30 | ], 31 | "迦納塞地": [ 32 | "加納塞地", 33 | "塞地" 34 | ], 35 | "剛果法郎": [ 36 | "法郎" 37 | ], 38 | "日元": [ 39 | "日幣" 40 | ], 41 | "蒲隆地法郎": [ 42 | "法郎" 43 | ], 44 | "加拿大元": [ 45 | "加拿大幣", 46 | "加元", 47 | "加幣" 48 | ], 49 | "法羅群島克朗": [ 50 | "克朗" 51 | ], 52 | "敘利亞鎊": [], 53 | "柬埔寨瑞爾": [ 54 | "瑞爾" 55 | ], 56 | "墨西哥比索": [ 57 | "墨西哥披索", 58 | "披索", 59 | "比索" 60 | ], 61 | "茲羅提": [], 62 | "格查爾": [], 63 | "朝鮮元": [], 64 | "達拉西": [], 65 | "越南盾": [], 66 | "史瓦濟蘭里蘭吉尼": [ 67 | "埃馬蘭吉尼" 68 | ], 69 | "聶斯特河沿岸盧布": [ 70 | "盧布" 71 | ], 72 | "馬爾他里拉": [ 73 | "里拉" 74 | ], 75 | "巴西雷亞爾": [ 76 | "巴西雷阿爾", 77 | "雷亞爾", 78 | "雷阿爾" 79 | ], 80 | "索羅門群島元": [ 81 | "所羅門群島元" 82 | ], 83 | "曼島鎊": [], 84 | "根西鎊": [], 85 | "阿森松鎊": [], 86 | "阿爾巴尼亞列克": [ 87 | "列克" 88 | ], 89 | "哈薩克堅戈": [ 90 | "堅戈" 91 | ], 92 | "烏吉亞": [], 93 | "沙烏地里亞爾": [ 94 | "里亞爾" 95 | ], 96 | "緬甸元": [ 97 | "緬元" 98 | ], 99 | "海地古德": [ 100 | "古德" 101 | ], 102 | "科科斯群島元": [], 103 | "冰島克朗": [ 104 | "克朗" 105 | ], 106 | "吉里巴斯元": [], 107 | "多明尼加披索": [ 108 | "多明尼加比索", 109 | "披索", 110 | "比索" 111 | ], 112 | "庫納": [], 113 | "努爾特魯姆": [], 114 | "英鎊": [], 115 | "烏茲別克索姆": [ 116 | "烏茲別克蘇姆", 117 | "索姆", 118 | "蘇姆" 119 | ], 120 | "尚比亞克瓦查": [ 121 | "克瓦查" 122 | ], 123 | "舊梅蒂卡爾": [], 124 | "澳門元": [], 125 | "索馬利蘭先令": [ 126 | "先令" 127 | ], 128 | "埃斯庫多": [], 129 | "奈及利亞奈拉": [ 130 | "奈拉" 131 | ], 132 | "丹麥克朗": [ 133 | "克朗" 134 | ], 135 | "巴貝多元": [], 136 | "澤西鎊": [], 137 | "哥斯大黎加科朗": [ 138 | "哥斯大黎加克朗", 139 | "克朗", 140 | "科朗" 141 | ], 142 | "薩爾瓦多克朗": [ 143 | "克朗" 144 | ], 145 | "喬治亞拉里": [ 146 | "拉里" 147 | ], 148 | "福克蘭群島鎊": [ 149 | "福克蘭鎊" 150 | ], 151 | "尼泊爾盧比": [ 152 | "盧比" 153 | ], 154 | "薩摩亞塔拉": [ 155 | "塔拉" 156 | ], 157 | "直布羅陀鎊": [], 158 | "牙買加元": [], 159 | "巴基斯坦盧比": [ 160 | "盧比" 161 | ], 162 | "新加坡元": [ 163 | "新加坡幣" 164 | ], 165 | "伊朗里亞爾": [ 166 | "里亞爾" 167 | ], 168 | "阿根廷披索": [ 169 | "阿根廷比索", 170 | "披索", 171 | "比索" 172 | ], 173 | "新土耳其里拉": [ 174 | "土耳其里拉", 175 | "新里拉", 176 | "里拉" 177 | ], 178 | "倫皮拉": [], 179 | "亞美尼亞德拉姆": [ 180 | "德拉姆" 181 | ], 182 | "特里斯坦-達庫尼亞鎊": [], 183 | "英屬維京群島元": [], 184 | "格里夫納": [], 185 | "立特": [], 186 | "阿里亞里": [], 187 | "卡達里亞爾": [ 188 | "里亞爾" 189 | ], 190 | "紐埃元": [], 191 | "寮國新基普": [ 192 | "寮國基普", 193 | "新基普", 194 | "基普" 195 | ], 196 | "新梅蒂卡爾": [], 197 | "秘魯索爾": [ 198 | "索爾" 199 | ], 200 | "馬拉威克瓦查": [ 201 | "馬拉威客瓦查", 202 | "克瓦查", 203 | "客瓦查" 204 | ], 205 | "阿魯巴弗羅林": [ 206 | "弗羅林" 207 | ], 208 | "索馬利亞先令": [ 209 | "先令" 210 | ], 211 | "斯洛伐克克朗": [ 212 | "克朗" 213 | ], 214 | "南喬治亞和南桑德韋奇群島鎊": [], 215 | "摩爾多瓦列伊": [], 216 | "阿曼里亞爾": [ 217 | "里亞爾" 218 | ], 219 | "伊拉克第納爾": [ 220 | "第納爾" 221 | ], 222 | "泰銖": [], 223 | "波札那普拉": [ 224 | "普拉" 225 | ], 226 | "多布拉": [], 227 | "模里西斯盧比": [ 228 | "盧比" 229 | ], 230 | "摩洛哥迪拉姆": [ 231 | "迪拉姆" 232 | ], 233 | "新謝克爾": [], 234 | "庫克群島元": [], 235 | "幾內亞法郎": [ 236 | "法郎" 237 | ], 238 | "新臺幣": [ 239 | "新台幣" 240 | ], 241 | "吐瓦魯元": [], 242 | "葛摩法郎": [ 243 | "法郎" 244 | ], 245 | "阿爾及利亞第納爾": [ 246 | "第納爾" 247 | ], 248 | "港元": [ 249 | "港幣" 250 | ], 251 | "巴拿馬巴波亞": [ 252 | "巴波亞" 253 | ], 254 | "塔卡": [], 255 | "匈牙利福林": [ 256 | "福林" 257 | ], 258 | "黎巴嫩鎊": [], 259 | "吉爾吉斯索姆": [ 260 | "吉爾吉斯索姆", 261 | "蘇姆", 262 | "索姆" 263 | ], 264 | "汶萊元": [], 265 | "美元": [ 266 | "美金" 267 | ], 268 | "東加潘加": [ 269 | "潘加" 270 | ], 271 | "奈克法": [ 272 | "納克法" 273 | ], 274 | "衣索比亞比爾": [ 275 | "比爾" 276 | ], 277 | "尼加拉瓜科多巴": [ 278 | "科多巴" 279 | ], 280 | "智利披索": [ 281 | "智利比索", 282 | "披索", 283 | "比索" 284 | ], 285 | "葉門里亞爾": [ 286 | "里亞爾" 287 | ], 288 | "愛沙尼亞克朗": [ 289 | "克朗" 290 | ], 291 | "韓國圓": [ 292 | "韓圓", 293 | "韓圜", 294 | "韓元", 295 | "韓幣" 296 | ], 297 | "坦尚尼亞先令": [ 298 | "先令" 299 | ], 300 | "俄羅斯盧布": [ 301 | "盧布" 302 | ], 303 | "歐元": [], 304 | "突尼西亞第納爾": [ 305 | "第納爾" 306 | ], 307 | "科威特第納爾": [ 308 | "第納爾" 309 | ], 310 | "獅子山利昂": [ 311 | "利昂" 312 | ], 313 | "非洲金融共同體法郎": [ 314 | "西非法郎", 315 | "法郎" 316 | ], 317 | "馬洛蒂": [], 318 | "菲律賓披索": [ 319 | "菲律賓比索", 320 | "披索", 321 | "比索" 322 | ], 323 | "古巴比索": [ 324 | "古巴披索", 325 | "披索", 326 | "比索" 327 | ], 328 | "土庫曼馬納特": [ 329 | "馬納特" 330 | ], 331 | "撒拉威比塞塔": [], 332 | "烏拉圭比索": [ 333 | "烏拉圭披索", 334 | "披索", 335 | "比索" 336 | ], 337 | "挪威克朗": [ 338 | "克朗" 339 | ], 340 | "人民幣": [], 341 | "利比亞第納爾": [ 342 | "第納爾" 343 | ], 344 | "阿聯迪拉姆": [ 345 | "迪拉姆" 346 | ], 347 | "玻利維亞諾": [ 348 | "玻利瓦諾" 349 | ], 350 | "太平洋法郎": [ 351 | "法郎" 352 | ], 353 | "埃及鎊": [], 354 | "巴哈馬元": [], 355 | "東加勒比元": [], 356 | "蘇利南元": [], 357 | "中非法郎": [ 358 | "法郎" 359 | ], 360 | "瓜拉尼": [], 361 | "千里達及托巴哥元": [], 362 | "辛巴威元": [], 363 | "印度盧比": [ 364 | "盧比" 365 | ], 366 | "印尼盾": [], 367 | "北馬其頓第納爾": [ 368 | "第納爾", 369 | "德納爾" 370 | ], 371 | "蘇丹第納爾": [ 372 | "第納爾" 373 | ], 374 | "南非蘭特": [ 375 | "蘭特" 376 | ], 377 | "納米比亞元": [], 378 | "約旦第納爾": [ 379 | "第納爾" 380 | ], 381 | "貝里斯元": [], 382 | "哥倫比亞披索": [ 383 | "哥倫比亞比索", 384 | "披索", 385 | "比索" 386 | ], 387 | "荷屬安地列斯盾": [ 388 | "安地列斯盾" 389 | ], 390 | "肯亞先令": [ 391 | "先令" 392 | ], 393 | "白俄羅斯盧布": [ 394 | "盧布" 395 | ], 396 | "斯里蘭卡盧比": [ 397 | "盧比" 398 | ], 399 | "羅馬尼亞列伊": [ 400 | "新列伊", 401 | "列伊" 402 | ], 403 | "密克羅尼西亞元": [], 404 | "塞爾維亞第納爾": [ 405 | "第納爾" 406 | ], 407 | "蘇丹鎊": [], 408 | "拉菲亞": [ 409 | "盧菲亞" 410 | ], 411 | "波士尼亞與赫塞哥維納可兌換馬克": [ 412 | "波赫可兌換馬克" 413 | ], 414 | "瑞士法郎": [ 415 | "法郎" 416 | ], 417 | "吉布提法郎": [ 418 | "法郎" 419 | ], 420 | "南蘇丹鎊": [], 421 | "巴布亞紐幾內亞基那": [ 422 | "基那" 423 | ], 424 | "諾魯元": [], 425 | "北馬利安納群島元": [], 426 | "阿富汗尼": [], 427 | "保加利亞列弗": [ 428 | "列弗" 429 | ], 430 | "賴比瑞亞元": [], 431 | "百慕達元": [], 432 | "塞席爾盧比": [ 433 | "盧比" 434 | ], 435 | "委內瑞拉主權玻利瓦": [ 436 | "委內瑞拉玻利瓦", 437 | "主權玻利瓦", 438 | "玻利瓦爾" 439 | ], 440 | "紐西蘭元": [ 441 | "鈕幣" 442 | ], 443 | "澳洲元": [ 444 | "澳元", 445 | "澳幣" 446 | ], 447 | "巴林第納爾": [ 448 | "第納爾" 449 | ], 450 | "萬那杜瓦圖": [ 451 | "瓦圖" 452 | ], 453 | "瑞典克朗": [ 454 | "克朗" 455 | ], 456 | "索莫尼": [], 457 | "聖赫倫那鎊": [], 458 | "開曼群島元": [], 459 | "斐濟元": [] 460 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_dirtyWordsTW.json: -------------------------------------------------------------------------------- 1 | { 2 | "我操你祖宗十八代":["㞗", "下三爛", "下賤", "不要臉", "中出", "中國豬", "亂交", "亂倫", "人妖", "仆街", "仆街仔", "仆街女", "他奶奶", "他奶奶的", "他奶娘的", "他媽ㄉ王八蛋", "他媽地", "他媽的", "他祖宗", "他馬的", "你他媽", "你他媽的", "你他馬的", "你個傻比", "你全家", "你去死吧", "你奶奶的", "你她馬的", "你妹的", "你媽", "你媽的", "你媽的屄", "你媽的逼", "你媽逼", "你媽逼的", "你找死", "你馬的", "俗辣", "傻b", "傻子", "傻屄", "傻比", "傻瓜", "傻逼", "冚家剷", "冚家拎", "冚家鏟", "北爛", "卑鄙", "去你媽", "去你的", "去死", "去死吧", "去死吧你", "叼你", "叼你媽的小屁屁", "吃大便", "吃屌", "吃屎", "吃雞巴", "吸毒", "呆子", "呆瓜", "咸家伶", "咸家鏟", "哇靠", "嘰歪", "垃圾", "塞恁老師", "大雞巴", "大龜頭", "奶奶的熊", "奸你", "好遜", "妓女", "妳她媽的", "妳娘的", "妳媽的", "妳老母的", "妳馬的", "姦屍", "娘泡", "婊子", "婊子養的", "媽b", "媽了個b", "媽了個逼", "媽個B", "媽的B", "媽的b", "媽逼", "小癟三", "小雞巴", "小雞雞", "小騷貨", "尛", "尻", "屄", "屌", "幹他", "幹你", "幹恁娘", "幹你娘", "幹你娘的", "幹你媽", "幹你老母", "幹恁老師", "幹幹幹", "幹您", "幹拎娘", "幹林", "廢柴", "廢物", "恁娘", "恁娘卡好", "恁娘咧", "懶叫", "懶教", "我嬲", "我幹你媽", "我操", "我操你", "我操你媽", "我操你母親", "我操你祖宗", "我日", "我靠", "我靠你老娘", "打炮", "打飛機", "扯你雞八蛋", "扯蛋", "找死", "找死啊你", "挖靠", "撚", "操他媽", "操你", "操你全家", "操你大爺", "操你奶奶", "操你奶奶的", "操你妹", "操你姥姥", "操你娘", "操你娘老雞巴", "操你媽", "操你媽的b", "操你媽的大雞巴", "操你媽的逼", "操你媽逼的", "操你屁眼", "操你祖宗", "操你老媽", "操你老母", "操大爺", "操妳", "操妳全家", "操妳娘", "操妳媽", "操妳祖宗", "操我", "操機掰", "操死", "操的我好爽", "操逼", "杏加橙", "格老子的", "機巴", "機掰", "機機歪歪", "死八婆", "死泡菜", "殺小", "法克", "法克you", "法克優", "法克油", "法克魷", "淫婦", "淫棍", "淫蟲", "淫賤", "混帳", "混球", "混蛋", "混賬", "爛b", "爛屄", "爛屌", "爛貨", "狐狸精", "狗娘養的", "狗屁", "狗屎", "狗日的", "狗狼養的", "狗腿", "狗臭屁", "狗雜種", "王八糕子", "王八蛋", "甘霖娘", "癟三", "發克油", "發情母狗", "白爛", "白痴", "白目", "盧小", "祖宗", "神經病", "禿屌", "笨蛋", "老癟三", "老騷貨", "肏", "肏穴", "肚爛", "胡扯蛋", "胡緊套", "臭娘們", "臭婊子", "臭狗屎", "臭皮", "舔雞巴", "蕩婦", "蠢", "蠢材", "豬", "豬八戒", "豬頭", "豬頭三", "賣b", "賣春", "賣逼", "賤", "賤b", "賤三八", "賤格", "賤種", "賤精", "贛您娘", "趕羚羊", "輪暴", "鄉巴佬", "長成個逼樣", "陽萎", "雞巴", "雪特", "靠北", "靠卑", "靠夭", "靠杯", "靠母", "靠爸", "靠背", "靠腰", "韓狗", "頂你個肺", "駛你公", "駛你娘", "駛你母", "駛你爸", "駛你老師", "駛你老母", "駛恁娘", "駛恁老母", "龜兒", "龜兒子", "龜孫", "龜孫子"] 3 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_govTW.json: -------------------------------------------------------------------------------- 1 | { 2 | "中央選舉委員會": [ 3 | "中選會" 4 | ], 5 | "中央研究院": [ 6 | "中研院" 7 | ], 8 | "國史館": [], 9 | "國家安全會議": [ 10 | "國安會" 11 | ], 12 | "國家安全局": [ 13 | "國安局" 14 | ], 15 | "憲法法庭": [], 16 | "最高法院": [], 17 | "行政法院": [], 18 | "公務員懲戒委員會": [ 19 | "公懲會" 20 | ], 21 | "考選部": [], 22 | "銓敘部": [], 23 | "審計部": [], 24 | "公平交易委員會": [ 25 | "公交會" 26 | ], 27 | "國家通訊傳播委員會": [], 28 | "促進轉型正義委員會": [ 29 | "促轉會" 30 | ], 31 | "中央銀行": [ 32 | "央行" 33 | ], 34 | "國立故宮博物院": [ 35 | "故宮", 36 | "故宮博物院", 37 | "故宮博物館" 38 | ], 39 | "大陸委員會": [ 40 | "陸委會" 41 | ], 42 | "香港辦事處": [], 43 | "澳門辦事處": [], 44 | "榮民工程事業管理處": [ 45 | "榮工處" 46 | ], 47 | "榮民總醫院": [ 48 | "榮總" 49 | ], 50 | "行政院": [], 51 | "立法院": [ 52 | "立院" 53 | ], 54 | "司法院": [], 55 | "考試院": [], 56 | "監察院": [], 57 | "人事行政總處": [ 58 | "人事行政局" 59 | ], 60 | "公務人力發展學院": [ 61 | "公發會" 62 | ], 63 | "主計總處": [ 64 | "主計處" 65 | ], 66 | "環境保護署": [ 67 | "環保署" 68 | ], 69 | "毒物及化學物質局": [], 70 | "農業委員會": [], 71 | "農糧署": [], 72 | "漁業署": [], 73 | "農田水利處": [], 74 | "動植物防疫檢疫局": [ 75 | "動防局" 76 | ], 77 | "農業金融局": [], 78 | "林務局": [], 79 | "水土保持局": [ 80 | "水保局" 81 | ], 82 | "公共工程委員會": [], 83 | "原子能委員會": [ 84 | "原能會" 85 | ], 86 | "放射性物料管理局": [], 87 | "內政部": [], 88 | "營建署": [], 89 | "警政署": [], 90 | "消防署": [], 91 | "役政署": [], 92 | "移民署": [], 93 | "外交部": [], 94 | "領事事務局": [ 95 | "領事局" 96 | ], 97 | "國防部": [], 98 | "政治作戰局": [ 99 | "政戰局" 100 | ], 101 | "軍備局": [], 102 | "主計局": [], 103 | "軍醫局": [], 104 | "參謀本部": [], 105 | "陸軍司令部": [], 106 | "海軍司令部": [], 107 | "空軍司令部": [], 108 | "後備指揮部": [], 109 | "憲兵指揮部": [], 110 | "財政部": [], 111 | "國庫署": [], 112 | "賦稅署": [], 113 | "關務署": [], 114 | "國有財產署": [], 115 | "臺北國稅局": [ 116 | "國稅局" 117 | ], 118 | "高雄國稅局": [ 119 | "國稅局" 120 | ], 121 | "北區國稅局": [ 122 | "國稅局" 123 | ], 124 | "中區國稅局": [ 125 | "國稅局" 126 | ], 127 | "南區國稅局": [ 128 | "國稅局" 129 | ], 130 | "財政資訊中心": [ 131 | "財資中心" 132 | ], 133 | "教育部": [], 134 | "國民及學前教育署": [ 135 | "學前教育署" 136 | ], 137 | "體育署": [], 138 | "青年發展署": [ 139 | "青發署" 140 | ], 141 | "法務部": [], 142 | "廉政署": [], 143 | "矯正署": [], 144 | "行政執行署": [], 145 | "調查局": [], 146 | "最高檢察署": [ 147 | "檢察署" 148 | ], 149 | "臺灣高等檢察署": [ 150 | "檢察署" 151 | ], 152 | "經濟部": [], 153 | "工業局": [], 154 | "國際貿易局": [ 155 | "國貿局" 156 | ], 157 | "標準檢驗局": [ 158 | "標檢局" 159 | ], 160 | "智慧財產局": [ 161 | "智財局" 162 | ], 163 | "能源局": [], 164 | "礦務局": [], 165 | "水利署": [], 166 | "中小企業處": [], 167 | "加工出口區管理處": [], 168 | "交通部": [], 169 | "民用航空局": [ 170 | "民航局" 171 | ], 172 | "中央氣象局": [ 173 | "氣象局" 174 | ], 175 | "觀光局": [], 176 | "公路總局": [], 177 | "高速公路局": [], 178 | "運輸研究所": [ 179 | "運研所" 180 | ], 181 | "航港局": [], 182 | "鐵道局": [], 183 | "衛生福利部": [ 184 | "衛福部" 185 | ], 186 | "疾病管制署": [ 187 | "疾管署" 188 | ], 189 | "食品藥物管理署": [ 190 | "食藥署" 191 | ], 192 | "中央健康保險署": [ 193 | "健保署" 194 | ], 195 | "國民健康署": [ 196 | "健康署" 197 | ], 198 | "社會及家庭署": [], 199 | "文化部": [], 200 | "文化資產局": [ 201 | "文化局", 202 | "文資局" 203 | ], 204 | "影視及流行音樂產業局": [], 205 | "勞動部": [], 206 | "勞工保險局": [ 207 | "勞保局" 208 | ], 209 | "勞動力發展署": [ 210 | "勞發署" 211 | ], 212 | "職業安全衛生署": [ 213 | "職安署" 214 | ], 215 | "勞動基金運用局": [], 216 | "勞動及職業安全衛生研究所": [ 217 | "勞衛所" 218 | ], 219 | "科技部": [], 220 | "新竹科學工業園區管理局": [ 221 | "竹科管理局" 222 | ], 223 | "中部科學工業園區管理局": [ 224 | "中科管理局" 225 | ], 226 | "南部科學工業園區管理局": [ 227 | "南科管理局" 228 | ], 229 | "僑務委員會": [ 230 | "僑委會" 231 | ], 232 | "客家委員會": [ 233 | "客委會" 234 | ], 235 | "金融監督管理委員會": [ 236 | "金管會" 237 | ], 238 | "銀行局": [], 239 | "證券期貨局": [], 240 | "保險局": [], 241 | "檢查局": [], 242 | "國家發展委員會": [ 243 | "國發會" 244 | ], 245 | "檔案管理局": [], 246 | "國軍退除役官兵輔導委員會": [ 247 | "退輔會" 248 | ], 249 | "原住民族委員會": [ 250 | "原委會" 251 | ], 252 | "原住民族文化發展中心": [ 253 | "原發中心" 254 | ], 255 | "海洋委員會": [], 256 | "海巡署": [], 257 | "海洋保育署": [ 258 | "海洋署" 259 | ], 260 | "國家海洋研究院": [ 261 | "海研院" 262 | ], 263 | "飛航安全調查委員會": [ 264 | "飛安委員會" 265 | ], 266 | "不當黨產處理委員會": [], 267 | "鐵道部": [], 268 | "農礦部": [], 269 | "農林部": [], 270 | "糧食部": [], 271 | "消費者保護委員會": [ 272 | "消保會" 273 | ], 274 | "新聞局": [ 275 | "新聞局" 276 | ], 277 | "青年輔導委員會": [ 278 | "青輔會" 279 | ], 280 | "體育委員會": [ 281 | "體委會" 282 | ], 283 | "經濟建設委員會": [ 284 | "經建會" 285 | ], 286 | "研究發展考核委員會": [ 287 | "研考會" 288 | ], 289 | "蒙藏委員會": [], 290 | "海岸巡防署": [ 291 | "海巡署" 292 | ] 293 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_herbs.json: -------------------------------------------------------------------------------- 1 | { 2 | "發散風寒":["麻黃", "桂枝", "紫蘇", "生薑", "香薷", "荊芥", "防風", "羌活", "白芷", "細辛", "辛夷", "蒼耳子", "藁本", "蔥白", "燈盞細辛", "鵝不食草"], 3 | "發散風熱":["薄荷", "柴胡", "葛根", "牛蒡子", "蟬蛻", "桑葉", "菊花", "升麻", "淡豆豉", "蔓荊子", "浮萍", "木賊", "桉葉", "蕤仁", "山芝麻"], 4 | "清熱瀉火":["石膏", "知母", "梔子", "蘆根", "天花粉", "淡竹葉", "夏枯草", "決明子", "鴨跖草", "青葙子", "密蒙花", "谷精草", "熊膽"], 5 | "清熱燥濕":["黃芩", "黃連", "黃柏", "龍膽草", "苦參", "秦皮", "白鮮皮"], 6 | "清熱解毒":["金銀花", "大青葉", "板藍根", "青黛", "貫眾", "蒲公英", "連翹", "野菊花", "紫花地丁", "魚腥草", "敗醬", "紅藤", "土茯苓", "白花蛇舌草", "白頭翁", "馬齒莧", "鴨膽子", "射干", "山豆根", "馬勃", "穿心蓮", "一枝黃花", "重樓", "拳參", "半邊蓮", "半枝蓮", "垂盆草", "金蕎麥", "四季青", "萬年青", "白蘞", "漏蘆", "千里光", "白藥子", "葎草", "冬凌草", "龍葵", "蛇莓", "天葵子", "山慈菇"], 7 | "清熱涼血":["生地黃", "玄參", "牡丹皮", "赤芍", "紫草", "水牛角"], 8 | "清虛熱":["青蒿", "地骨皮", "銀柴胡", "胡黃連", "荷葉", "綠豆", "白薇"], 9 | "攻下":["大黃", "芒硝", "番瀉葉", "蘆薈"], 10 | "潤下":["火麻仁", "郁李仁"], 11 | "峻下逐水":["甘遂", "京大薊", "芫花", "巴豆", "牽牛子", "商路", "千金子", "狼毒", "蓖麻子"], 12 | "祛風寒濕":["獨活", "威靈仙", "川烏", "木瓜", "蘄蛇", "烏梢蛇"], 13 | "袪風濕熱":["秦艽", "防巳", "臭梧桐", "絡石藤", "豨薟草", "桑枝", "雷公藤", "盾翅藤", "蠶沙", "絲瓜絡"], 14 | "祛風濕強筋骨":["五加皮", "桑寄生", "狗脊", "千年健"], 15 | "化濕":["藿香", "佩蘭", "蒼朮", "厚朴", "砂仁", "豆蔻", "草果"], 16 | "利水消腫":["茯苓", "薏苡仁", "豬苓", "澤瀉", "赤小豆", "冬瓜皮", "玉米須", "澤漆", "蟋蟀"], 17 | "利尿通淋":["車前子", "石韋", "木通", "通草", "滑石", "扁蓄", "瞿麥", "地膚子", "海金沙", "萆薢", "冬葵子"], 18 | "利濕退黃":["茵陳蒿", "金錢草", "虎杖", "田基黃", "白英"], 19 | "溫里":["附子", "乾薑", "肉桂", "吳茱萸", "小茴香", "高良姜", "丁香", "胡椒", "花椒", "蓽苃", "蓽澄茄"], 20 | "理氣":["陳皮", "青皮", "佛手", "枳實", "木香", "沉香", "檀香", "川楝子", "香附", "烏藥", "荔枝核", "薤白", "柿蒂", "娑羅子", "八月札", "綠梅花", "九香蟲"], 21 | "消食":["山楂", "神麴", "麥芽", "穀芽", "萊菔子", "雞內金"], 22 | "驅蟲":["使君子", "苦楝皮", "檳榔", "南瓜子", "鶴草芽", "雷丸", "鶴虱", "痱子", "蕪荑"], 23 | "涼血止血":["大薊", "小薊", "地榆", "側柏葉", "槐花", "白茅根", "苧麻根", "羊蹄", "斷血流"], 24 | "化瘀止血":["三七", "茜草", "蒲黃", "藕節", "卷柏"], 25 | "收斂止血":["白及", "仙鶴草", "棕櫚炭", "血餘炭"], 26 | "溫經止血":["艾葉", "炮姜", "灶心土"], 27 | "活血止痛":["川芎", "鬱金", "薑黃", "延胡索", "乳香", "沒藥", "五靈脂"], 28 | "活血調經":["丹參", "紅花", "桃仁", "益母草", "牛膝", "雞血藤", "王不留行", "月季花"], 29 | "活血療傷":["馬錢子", "骨碎補", "蘇木", "自然銅"], 30 | "破血消癥":["莪朮", "三棱", "水蛭", "虻蟲", "穿山甲", "地鱉蟲", "蜣螂"], 31 | "溫化寒痰":["半夏", "天南星", "禹白附", "白芥子", "鐘乳石"], 32 | "清化熱痰":["瓜蔞", "川貝母", "浙貝母", "竹茹", "竹瀝", "天竺黃", "桔梗", "前胡", "海藻", "昆布", "紫蘇子", "烏蛇膽", "胖大海", "藏青果", "掛金燈", "羅漢果", "木蝴蝶", "礞石", "蛤殼"], 33 | "止咳平喘":["苦杏仁", "蘇子", "百部", "紫菀", "款冬花", "馬兜鈴", "枇杷葉", "桑白皮", "葶藶子", "白果", "白前"], 34 | "重鎮安神":["硃砂", "磁石", "龍骨", "琥珀", "珍珠", "紫石英"], 35 | "養心安神":["酸棗仁", "柏子仁", "遠志", "合歡皮", "夜交藤"], 36 | "平抑肝陽":["石決明", "珍珠母", "牡蠣", "代赭石", "刺蒺藜", "羅布麻葉"], 37 | "息風止痙":["羚羊角", "鉤藤", "牛黃", "天麻", "地龍", "全蠍", "蜈蚣", "白僵蠶", "蛇蛻"], 38 | "開竅":["麝香", "冰片", "蘇合香", "安息香", "石菖蒲"], 39 | "補氣":["人參", "西洋參", "黨參", "太子參", "黃芪", "白朮", "山藥", "甘草", "大棗", "蜂蜜", "白扁豆", "刺五加"], 40 | "補血":["當歸", "熟地黃", "白芍", "阿膠", "何首烏", "龍眼肉", "雞血藤", "綠礬", "紅棗"], 41 | "補陽":["鹿茸", "鹿角", "紫河車", "淫羊藿", "巴戟天", "仙茅", "杜仲", "續斷", "肉蓯蓉", "鎖陽", "補骨脂", "益智仁", "菟絲子", "沙苑子", "白蒺藜", "潼蒺藜", "蛤蚧", "核桃仁", "冬蟲夏草"], 42 | "補陰":["北沙參", "南沙參", "百合", "麥冬", "天冬", "玉竹", "黃精", "枸杞子", "墨旱蓮", "女貞子", "鱉甲", "龜板", "石斛"], 43 | "固表止汗":["麻黃根", "浮小麥", "碧桃干"], 44 | "斂肺澀腸":["五味子", "五倍子", "烏梅", "訶子", "肉豆蔻", "罌粟殼", "赤石脂", "禹餘糧", "石榴皮", "椿皮"], 45 | "固精縮尿止帶":["山茱萸", "覆盆子", "桑螵蛸", "金櫻子", "海螵蛸", "蓮子", "芡實", "益智仁", "南燭子"], 46 | "涌吐":["常山", "瓜蒂", "膽礬", "藜蘆"], 47 | "攻毒殺蟲止癢":["雄黃", "硫磺", "白礬", "蛇床子", "蟾酥", "樟腦", "木鱉子", "土荊皮", "蜂房", "大蒜", "斑蝥", "大風子仁", "木槿皮", "木芙蓉葉", "藤黃"], 48 | "拔毒化腐生肌":["兒茶", "升藥", "輕粉", "紅粉", "砒石", "鉛丹", "爐甘石", "硼砂"] 49 | 50 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_medGear.json: -------------------------------------------------------------------------------- 1 | { 2 | "耳溫槍":[], 3 | "自控式止痛儀":["pca", "PCA", "Pca", "止痛儀", "止痛器"], 4 | "換藥車":["藥車"], 5 | "氧氣筒":[], 6 | "心臟電擊器":["起搏器", "電擊器"], 7 | "血糖機":["血糖儀"], 8 | "輪椅":[], 9 | "洗澡椅":[], 10 | "烤燈":[], 11 | "點滴幫浦":["iv pump", "IV PUMP", "Iv Pump", "IV pump", "Iv pump"], 12 | "輪血加溫器":[], 13 | "氧氣設備":["給氧設備"], 14 | "蒸氣吸入器":["steam inhalation", "Steam inhalation", "Steam Inhalation", "STEAM INHALATION"], 15 | "急救車":[], 16 | "血壓監視器":["BP Monitor", "BP MONITOR", "BP monitor"] 17 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_medRecord.json: -------------------------------------------------------------------------------- 1 | { 2 | "健康檢查":["健檢", "Health checkup", "Health Checkup", "health checkup"], 3 | "實驗室檢查":["Laboratory examination", "Lab Examination", "lab examination", "Laboratory Exam", "Lab Exam", "lab exam"], 4 | "自動出院":["AAD", "Against-advise discharge"], 5 | "許可下出院":["MBD", "May be discharge"], 6 | "腹部":["Abd", "ABD", "Abdomen"], 7 | "抗生素":["Anti", "Antibiotics"], 8 | "腸蠕動音":["B/S", "Bowel sound", "bowel sound"], 9 | "呼吸音":["B/S", "Breathing sound", "breathing sound"], 10 | "疑似":["R/O", "Rule out", "rule out"], 11 | "醫囑":["Order", "order"], 12 | "入院記錄":["Admission note", "admission note"], 13 | "病程記錄":["Progression note", "progression note"], 14 | "會診":["Consult", "consult"], 15 | "痰":["Sputum", "sputum"], 16 | "尿":["尿液", "Urine", "urine"], 17 | "尿布":["包大人", "尿褲", "紙尿褲", "紙尿布"], 18 | "糞便":["Stool", "stool"], 19 | "同意書":["Permit", "permit"], 20 | "病歷":["Chart", "chart"], 21 | "明晨":["CM", "Coming morning", "coming morning"], 22 | "午夜":["MN", "Midnight", "midnight"], 23 | "咳嗽":["Cough", "cough"], 24 | "呼吸短促":["SOB", "Short of breath", "short of breath"], 25 | "薄荷油擦拭":["Menthol packing", "menthol packing"], 26 | "病毒": ["Virus", "virus"], 27 | "細菌":["Bacteria", "bacteria"], 28 | "感染":["Infection", "infection"], 29 | "溫水拭浴":["Warm water bath", "warm water bath"], 30 | "局部使用":["Topical use", "topical use"], 31 | "腹瀉":["Diarrhea", "diarrhea"], 32 | "頭痛":["Headache", "headache"], 33 | "點滴":[], 34 | "生理食鹽水":["N/S", "Normal saline", "normal saline"], 35 | "無菌蒸餾水":["D/W", "Distilled water", "distilled water"], 36 | "葡萄糖水":["G/W", "Glucose water", "glucose water"], 37 | "常規":["Routine", "routine"], 38 | "靜脈注射液":["IVF", "Intravenous fluid", "intravenous fluid"], 39 | "加藥":["IV bag"], 40 | "門診":["OPD", "Outpatient department", "outpatient department"], 41 | "診所":["LMD", "Local medical doctor", "local medical doctor", "開業醫院", "外院"], 42 | "攝入與排出":["I/O", "Intake and output", "intake and output"], 43 | "主訴":["C/O", "Chief complain", "chief complain", "抱怨"], 44 | "追蹤":["F/U", "Follow up", "follow up"], 45 | "脫水":["Dehydration", "dehydration"], 46 | "嘔吐":["Vomiting", "vomiting"], 47 | "身體評估":["PE", "Physical examination", "physical examination", "Physical exam", "physical exam"], 48 | "尿布疹":["Diaper dermatitis", "diaper dermatitis", "紅臀"], 49 | "禁止由口進食":["NPO", "Non per oral", "non per oral"], 50 | "觀察":["Obs", "obs", "Observation", "observation"], 51 | "水枕":["Water packing", "water packing"], 52 | "寒顫":["Chillness", "chillness"], 53 | "暫停":["Hold", "hold"], 54 | "發燒":["Fever", "fever"], 55 | "喘鳴音":["Wheezing", "wheezing", "哮喘音"], 56 | "哮鳴音":["Stridor", "stridor"], 57 | "濕曪音":["Crackles", "crackles"], 58 | "乾曪音":["Rhonchi", "rhonchi"], 59 | "軟":["Soft", "soft"], 60 | "脹":["Distension", "distension"], 61 | "陰性":[" N.", "Neg", "neg", "Negative", "negative"], 62 | "陽性":[" P.", "Pos", "pos", "Positive", "positive"], 63 | "穩定":["Stable", "stable"], 64 | "氧氣面罩":["O2 Mask"], 65 | "氧氣頭罩":["O2 Hood"], 66 | "病史":["Hx", "History", "history"], 67 | "食欲":["Appetite", "appetite"], 68 | "心跳速率":["HR", "Heart rate", "heart rate"], 69 | "呼吸速率":["RR", "Respiratory rate", "respiratory rate"], 70 | "體溫":["BT", "Body temperature", "body temperature"], 71 | "血壓":["BP", "Blood pressure", "blodd pressure"], 72 | "體重":["BW", "Body weight", "body weight"], 73 | "身高":["BH", "Body height", "body height"], 74 | "停止":["DC", "Discontinue", "discontinue"], 75 | "痛":["Pain", "pain"], 76 | "正常":["Normal", "normal"], 77 | "盤尼西林皮膚測試":["PCT", "Penicillin skin test", "penicillin skin test"], 78 | "噴霧治療":["Steam inhalation", "steam inhalation"], 79 | "診斷":["Impression", "impression"] 80 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_medTreatment.json: -------------------------------------------------------------------------------- 1 | { 2 | "電腦斷層檢查":["CT", "Computed Tomography", "Computed tomography", "computed tomography"], 3 | "心電圖":["EKG", "Electrocardiogram", "electrocardiogram"], 4 | "核磁共振":["磁振影像檢查", "M.R.I.", "MRI", "Magnetic Resonance Imagine", "Magnetic resonance imagine"], 5 | "胸部由後往前X光檢查":["Chest PA", "chest PA", "CXR", "Chest X-Ray Posterior to Anterior", "Chest X-Ray posterior to anterior"], 6 | "胃鏡":["PES", "Endoscopy", "endoscopy", "Panendoscop", "panendoscop"], 7 | "經皮腎盂造廔":["PCN", "Percutaneous nephrostomy", "Percutaneous Nephrostomy"], 8 | "腹部超音波檢查":["Abd. Echo", "Abd. echo", "abd. echo", "Abd. Sona", "Abd. sona", "abd. sona"], 9 | "骨質密度測定":["BMD", "Bone Mineral Density", "Bone mineral density"], 10 | "大腸鏡":["colonscopy"], 11 | "尿液常規檢驗":["U/R", "Urine Routine", "Urine routine", "urine routine"], 12 | "尿液細菌培養":["U/C", "Urine Culture", "Urine culture", "urine culture"], 13 | "腎臟輸尿管膀胱攝影":["KUB"], 14 | "心臟超音波":["Cardio echo", "Cardio Echo", "cardio echo"], 15 | "經皮穿肝膽道引流術":["PTCD", "Percutaneous Transepatic Cholangial Drainage", "Percutaneous transepatic cholangial drainage"], 16 | "腹部掃描":["腹部攝影", "Abdominal CT", "Abdominal scan", "Abdominal Scan", "Abd. CT", "Abd. scan", "Abd. scan", "abd. CT", "abd. scan"], 17 | "腹部超音波":["Abdominal Echo", "Abdominal echo", "Abd. Echo", "Abd. echo", "abd. Echo", "abd. echo"], 18 | "血管攝影":["Angiography", "angiography"], 19 | "腦部掃描":["Brain Scan", "Brain scan", "Brain CT", "brain scan", "brain CT"], 20 | "胸部X光":["Chest PA"], 21 | "靜脈注射腎盂攝影":["IVP", "Intravenous pyelogram", "Intravenous Pyelogram"], 22 | "下腸胃道攝影":["LGI Series", "LGI", "LGI series", "Lower Gastrointestinal Series", "Lower gastrointestinal series"], 23 | "肺功能檢查":["PFT", "Pulmonary Function Test", "Pulmonary function test", "pulmonary function test"], 24 | "腎臟超音波":["Renal Echo", "Renal echo", "renal echo"], 25 | "小腸攝影":["Small intestine series", "small intestine series", "Small Intestine Series"], 26 | "上腸胃道攝影":["Upper GI series", "Upper GI Series"], 27 | "消化道內視鏡檢查":["Endoscopy", "endoscopy"], 28 | "經動脈血管栓塞":["TAE", "Trans-Arterial Embolization", "Trans-arterial embolization"], 29 | "肝切除術":["Hepatectomy", "hepatectomy"], 30 | "膽囊切除術":["Cholecystectomy", "cholecystectomy"], 31 | "小腸切除術":["Enterectomy", "enterectomy"], 32 | "大腸切除術":["Colectomy", "colectomy"], 33 | "脾切除術":["Splenectomy", "splenectomy"], 34 | "腹腔鏡膽囊切除術":["LC", "L.C.", "Laparoscopic cholecystectomy", "laparoscopic cholecystectomy"], 35 | "闌尾切除術":["APP", "Appendectomy", "appendectomy"], 36 | "痔瘡切除術":["Hemorrhoidectomy","hemorrhoidectomy"], 37 | "疝氣修補術":["Hernioplasty", "hernioplasty", "Herniorrhaphy", "herniorrhaphy"], 38 | "血液透析":["HD", "hemodialysis", "Hemodialysis"], 39 | "胃切除術":["Gastrectomy", "gastrectomy"], 40 | "結腸造廔術":["Colostomy", "colostomy"], 41 | "經尿道內視鏡膀胱腫瘤切除手術":["TURBP", "Transurethral Resection of Bladder Tumor", "Transurethral resection of bladder tumor", "transurethral resection of bladder tumor"], 42 | "開放性復位內固定":["ORIF", "Open Reduction Internal Fixation", "Open reduction internal fixation"] 43 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_procedureLawTW.json: -------------------------------------------------------------------------------- 1 | { 2 | "原告":["plaintiff", "Plaintiff"], 3 | "被告":["defendant", "Defendant"], 4 | "共同原告":["co-plaintiffs", "Co-plaintiffs"], 5 | "共同被告":["co-defendants", "Co-defendants"], 6 | "當事人":["parties", "Parties"], 7 | "當事人能力":["capacity (to sue)", "Capacity (to sue)", "capacity", "Capacity"], 8 | "當事人適格":["standing (to sue)", "Standing (to sue)", "standing", "Standing"], 9 | "欠缺行為能力":["incapacitated", "Incapacitated"], 10 | "監護人":["法定代理人", "custodian", "Custodian"], 11 | "訴狀":["complaint", "Complaint"], 12 | "答辯狀":["answer", "Answer"], 13 | "反訴":["cross-complaint", "Cross-complaint"], 14 | "訴狀送達":["service of complaint", "Service of complaint"], 15 | "住所":["domicile", "Domicile"], 16 | "居所":["residence", "Residence"], 17 | "管轄權":["jurisdiction", "Jurisdiction"], 18 | "審判籍":["forum", "Forum"], 19 | "告":["控告", "sue", "Sue"], 20 | "官司":["lawsuit", "Lawsuit"], 21 | "向法院申告陳訴":["plead", "Plead"], 22 | "訴狀內容":["pleadings", "Pleadings"], 23 | "訴訟原因":["請求權", "cause of action", "Cause of action"], 24 | "責任":["liability", "Liability"], 25 | "義務":["duty", "Duty"], 26 | "債務":["obligation", "Obligation"], 27 | "衡平":["equity", "Equity"], 28 | "事實":["facts", "Facts"], 29 | "爭點":["issues", "Issues"], 30 | "規則":["rules", "Rules"], 31 | "救濟":["remedies", "Remedies"], 32 | "損害賠償":["損害賠償", "金錢", "damages", "Damages"], 33 | "強制屢行給付作為":["specific performance", "Specific performance"], 34 | "撤銷訴訟":["dismissal", "Dismissal"], 35 | "不可補正之撤銷訴訟":["dismissal with prejudice", "Dismissal with prejudice"], 36 | "可補正之撤銷訴訟":["dismissal without prejudice", "Dismissal without prejudice"], 37 | "一事不再理":["res judicata"], 38 | "利益衝突":["conflict of interest", "Conflict of interest"], 39 | "迴避":["disqualification", "Disqualification"], 40 | "實體":["substance", "Substance"], 41 | "程序":["procedure", "Procedure"], 42 | "民事訴訟程序":["civil procedures", "Civil procedures"], 43 | "刑事訴訟程序":["criminal procedures", "Criminal procedures"], 44 | "法院":["court", "Court"], 45 | "審判場所":["tribunal", "Tribunal"], 46 | "法官":["judge", "Judge"], 47 | "證據調查":["discoveries", "Discoveries"], 48 | "律師傳詢證人作筆錄之程序":["deposition", "Deposition"], 49 | "抗告程序":["抗告程序", "正式開庭審判之前置程序", "law and motions", "Law and motions"], 50 | "抗告裁定":["order", "Order"], 51 | "陪審團":["jury", "Jury"], 52 | "律師選拔陪審團之詰詢程序":["voir dier"], 53 | "正式開庭審判之程序":["trial", "Trial"], 54 | "言詞辯論":["oral arguments", "Oral arguments"], 55 | "開場之陳述":["opening statement", "Opening statement"], 56 | "詰詢我方證人":["direct-examination", "Direct-examination"], 57 | "詰詢對方證人":["詰詢對方證人", "交互詰詢", "cross-examination", "Cross-examination"], 58 | "辯論終結之陳述":["closing statement", "Closing statement"], 59 | "判決":["judgment", "Judgement"], 60 | "被告缺席判決":["default judgment", "Default judgement"], 61 | "確定終局判決":["judgment by court of last resort", "Judgement by court of last resort"], 62 | "判決理由":["ratio decidendi", "Ratio decidendi"], 63 | "旁論":["旁論", "非形成判決理由之論述", "dictum", "Dictum"], 64 | "先例":["precedent", "Precedent"], 65 | "先例拘束原則":["stare decisis"], 66 | "溯及既往":["retroactivity", "Retroactivity"], 67 | "令狀":["writ", "Writ"], 68 | "強制令":["injunction", "Injunction"], 69 | "判決之強制執行":["enforcement of judgment", "Enforcement of judgement"], 70 | "證人":["witness", "Witness"], 71 | "證據":["evidence", "Evidence"], 72 | "傳聞證據":["hearsay", "Hearsay"], 73 | "反對引入證據":["objections", "Objections"], 74 | "專家證人":["專家證人", "鑑定人", "expert witness", "Expert witness"], 75 | "法庭傳喚證人":["subpoena", "Subpoena"], 76 | "舉證責任":["burden of proof", "Burden of proof"], 77 | "律師":["律師", "專研法律之人", "lawyer", "Lawyer", "訴訟代理人", "attorney", "Attorney"], 78 | "訴訟代理人":["attorney at law", "Attorney at law"], 79 | "委任代理人":["attorney in fact", "Attorney in fact"], 80 | "委任授權書":["power of attorney", "Power of attorney"], 81 | "律師費":["attorney fee", "Attorney fee"], 82 | "訴訟費用":["court costs", "Court costs"], 83 | "擔保":["undertakings", "Undertakings"], 84 | "擔保人":["surety", "Surety"] 85 | } 86 | -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_pttCompanyAlias.json: -------------------------------------------------------------------------------- 1 | { 2 | "IC設計公司" :[ "豬屎屋"], 3 | "台積電": ["台GG", "GG", "護國神山"], 4 | "世界先進": ["仙境", "RO"], 5 | "鴻海":["海公公", "海邊", "海底"], 6 | "InFocus": ["Nokia", "Sharp", "郭董牌", "果凍牌", "鍋貼牌"], 7 | "聯發科":["發哥", "大M", "葡萄王"], 8 | "晨星":["小m"], 9 | "瑞昱":["R", "螃蟹"], 10 | "GGmNRPS":[], 11 | "聯電":["U", "大碩"], 12 | "聯詠":["滷肉"], 13 | "奇景":["海馬"], 14 | "立錡":["錢多", "有錢公司", "小螃蟹"], 15 | "宏達電":["紅茶", "紅茶店", "Hㄒㄈ", "hㄒㄈ", "火腿腸", "紫光任務", "中国品牌", "HelpThisCompany"], 16 | "友達":["戀人未滿"], 17 | "奇美電":["包子店"], 18 | "廣達":["肉鬆", "肉鬆店"], 19 | "和碩":["皮卡丘"], 20 | "日月光":["神教"], 21 | "力晶":["天后宮"], 22 | "BenQ":["笨Q"], 23 | "華亞科":["滑牙科", "牙科"], 24 | "欣興":["麵包店"], 25 | "樂陞":["療養院"], 26 | "華碩":["石頭店", "以卵擊石", "子龍任務"], 27 | "華擎": ["小石頭"], 28 | "技嘉":["雞排店", "G心叵測"], 29 | "微星":["小星星", "中二龍", "微薪", "G星"], 30 | "撼訊":["威力彩"], 31 | "Liteon": ["光寶科", "點燈牌"], 32 | "燦坤":["黃色鬼屋"], 33 | "順發3C":["藍色佛堂"], 34 | "露天拍賣":["沒屋頂"], 35 | "欣亞":["藝人店", "女藝人"], 36 | "autobuy":["機車店", "自動買"], 37 | "原價屋":["高價屋"], 38 | "中華電信":["種花", "種花電信", "小公司"], 39 | "遠傳":["大公司"], 40 | "統一":["統二"], 41 | "7-11":["-4", "小七"], 42 | "國泰集團":["大樹", "花椰菜"], 43 | "中國信託":["廢牡蠣"], 44 | "新光金":["西瓜金", "兩光金", "大散戶"], 45 | "三商銀":["第一", "華南", "彰銀"], 46 | "英業達":["小英"], 47 | "中鋼":["中肛", "肛肛"], 48 | "鵬泰":["月月鳥泰"], 49 | "遠東航空":["近西", "胖胖"], 50 | "1111人力銀行":[" 鐵支銀行"], 51 | "104人力銀行":["e04", "奴隸銀行"], 52 | "遊戲新幹線":["新斷線"], 53 | "遊戲橘子":["黑橘"], 54 | "紅心辣椒":["黑椒"], 55 | "自由時報":["豬油", "目田", "自冉"], 56 | "聯合報:":["聯合重工"], 57 | "中國時報":["中屎", "狗報"], 58 | "中天":["中舔", "中國天空", "中夭", "韓天電視"], 59 | "TVBS" :[" AVBS", "TVBullShit", "TV135"], 60 | "民視":["冥視"], 61 | "三立":["泣", "泣台", "兩立"], 62 | "東森":["陰森"], 63 | "Luxgen":["垃圾菌", "拉屎菌", "囚車", "囚排", "那隻賊"], 64 | "飛碟電台":["匪諜電台"], 65 | "Dcard":["豬腳", "低卡", "低能卡", "dcard"], 66 | "玉山金":["高山", "領事館"], 67 | "台新銀行":["海豚銀行", "白海豚"], 68 | "慧洋":["慧慧"], 69 | "台表科":["台灣表哥", "表哥"], 70 | "穩懋":["穩套"], 71 | "智邦":["智崩"], 72 | "楠梓電":["男子漢"], 73 | "蘋果":["阿婆", "水果行"], 74 | "EVGA":["潮牌"], 75 | "金士頓":["金金計較", "黑士頓", "黑金"], 76 | "SanDisk":["閃迪", "閃屌"], 77 | "OCZ":["orz", "OCG"], 78 | "EZLink":["容易連", "翻車牌"], 79 | "日立":["冷氣牌"], 80 | "家樂福":["天天都騙你"], 81 | "Garena":["G社", "佛心公司"], 82 | "安麗":["阿麗", "anglee"], 83 | "Nu skin":["新皮膚", "新皮", "Nuskin", "NuSkin"], 84 | "賀寶芙":["早餐店", "賀寶寶"], 85 | "NBC":["孔雀台"], 86 | "FOX":["福斯電視網", "狐狸台"], 87 | "百度":["百毒"], 88 | "三星":["三爽", "星星星", "***"], 89 | "麥當勞":["藍藍路"], 90 | "微軟":["M$", "又小又軟"], 91 | "Sony":["$ony"], 92 | "IBM":["外星科技"], 93 | "戴爾":["呆鵝", "dell", "Dell", "DELL"], 94 | "Seagate":["死雞"], 95 | "Viewsonic":["三隻鳥", "三鳥牌"], 96 | "Toyota":["頭又大", "牛頭牌"], 97 | "中國中央電視台":["CCAV", "央視"], 98 | "英特爾":["牙膏廠"], 99 | "AMD":["農企"], 100 | "花旗銀行":["花枝", "方丈"], 101 | "騰訊":["企鵝"], 102 | "網易":["養豬場"] 103 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_中天觀眾行話.json: -------------------------------------------------------------------------------- 1 | { 2 | "民進黨": ["綠蠅","冥進洞","民退黨","民進幫","蔡屎皇","菜蝗","蔡則天","暝進黨","1450","817","萊豬",""], 3 | "陳其邁":["54088","其邁", "單雞掰", "G8"], 4 | "謝長廷":["洩腸停"], 5 | "郭台銘":["郭老闆"], 6 | "蔡英文":["菜陰魂", "蔡巫婆","菜惠帝","菜老陰磁吸太厚","臉疲態后","蔡鷹蚊","817","蔡總統","蔡特勒","蔡則天","蔡正恩"], 7 | "韓國瑜":["韓市長","552","韓國渝"], 8 | "賴清德":["賴老師","赖教授"], 9 | "馬英九":["馬總統"], 10 | "郭正亮":["阿亮"], 11 | "高嘉瑜":["高甲魚"], 12 | "王美惠":["亡霉賄"], 13 | "蘇貞昌":["光頭穌","輸騙娼"], 14 | "何欣純":["何欣","何萊","何星蠢","何姥姥","何腥唇","萊欣純","何腥純","何欣不純"], 15 | "侯友宜":["猴"] 16 | } 17 | -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_水滸傳人物.json: -------------------------------------------------------------------------------- 1 | { 2 | "宋江": ["呼保義", "及時雨", "孝義黑三郎", "黑宋江", "天魁星"], 3 | "吳用": ["智多星", "吳加亮", "吳學究", "天機星"], 4 | "盧俊義": ["李進義", "玉麒麟", "天罡星"], 5 | "楊志": ["青面獸", "天暗星"], 6 | "李海": ["李俊", "混江龍", "天壽星"], 7 | "史進": ["九紋龍", "天微星"], 8 | "公孫勝": ["入雲龍", "一清道人", "天閒星"], 9 | "張順": ["浪裏白條", "浪裏白跳", "天損星"], 10 | "秦明": ["霹靂火", "天猛星"], 11 | "阮小七": ["活閻羅", "天敗星"], 12 | "阮小五": ["短命二郎", "天罪星"], 13 | "阮小二": ["立地太歲", "阮進", "天劍星"], 14 | "關勝": ["關必勝", "大刀", "天勇星"], 15 | "林沖": ["豹子頭", "小張飛", "天雄星"], 16 | "李逵": ["黑旋風", "鐵牛", "天殺星"], 17 | "柴進": ["小旋風", "天貴星"], 18 | "徐寧": ["金鎗手", "天祐星"], 19 | "李應": ["撲天鵰", "撲天雕", "天富星"], 20 | "劉唐": ["赤髮鬼", "天異星"], 21 | "董平": ["一直撞", "雙鎗將", "雙槍將", "天立星"], 22 | "雷橫": ["插翅虎", "天退星"], 23 | "朱同": ["朱仝", "美髯公", "天滿星"], 24 | "戴宗": ["神行太保", "天速星"], 25 | "楊雄": ["病關索", "王雄", "賽關索", "天牢星"], 26 | "解珍": ["兩頭蛇", "天暴星"], 27 | "解寶": ["雙尾蠍", "天哭星"], 28 | "花榮": ["小李廣", "銀槍手", "神箭將軍", "神臂將軍", "天英星"], 29 | "張清": ["沒羽箭", "張青", "天捷星"], 30 | "穆弘": ["沒遮攔", "穆橫", "天究星"], 31 | "燕青": ["浪子", "燕小乙", "天巧星"], 32 | "魯智深": ["魯達", "花和尚", "天孤星"], 33 | "武松": ["行者", "武二郎", "打虎英雄", "情義武二郎", "灌口武二郎", "山東武二", "天傷星"], 34 | "呼延灼": ["雙鞭", "鐵鞭", "呼延綽", "天威星"], 35 | "索超": ["急先鋒", "天空星"], 36 | "石秀": ["拚命三郎", "天慧星"], 37 | "張岑": ["張橫", "船火兒", "火船工", "天平星"], 38 | "杜千": ["摸著天", "杜遷", "摸著雲", "地妖星"], 39 | "扈三娘": ["一丈青", "地慧星"], 40 | "丁得孫": ["中箭虎", "地速星"], 41 | "侯健": ["通臂猿", "地遂星"], 42 | "凌振": ["轟天雷", "地軸星"], 43 | "呂方": ["小溫侯", "地佐星"], 44 | "周通": ["小霸王", "地空星"], 45 | "單廷珪": ["聖水將", "地奇星"], 46 | "孔亮": ["獨火星", "地狂星"], 47 | "孔明": ["毛頭星", "地猖星"], 48 | "孟康": ["玉旛竿", "地満星"], 49 | "孫二娘": ["母夜叉", "地壯星"], 50 | "孫新": ["小尉遲", "地數星"], 51 | "孫立": ["病尉遲", "地勇星"], 52 | "安道全": ["神醫", "地靈星"], 53 | "宋清": ["鐵扇子", "地俊星"], 54 | "宋萬": ["雲裏金剛", "地魔星"], 55 | "宣贊": ["醜郡馬", "地傑星"], 56 | "張青": ["菜園子", "地刑星"], 57 | "彭玘": ["天目將", "地英星"], 58 | "施恩": ["金眼彪", "地伏星"], 59 | "時遷": ["鼓上蚤", "地賊星"], 60 | "曹正": ["操刀鬼", "地羈星"], 61 | "朱富": ["笑面虎", "地藏星"], 62 | "朱武": ["神機軍師", "地魁星"], 63 | "朱貴": ["旱地忽律", "地囚星"], 64 | "李忠": ["打虎將", "地僻星"], 65 | "李立": ["催命判官", "地奴星"], 66 | "李袞": ["飛天大聖", "地走星"], 67 | "李雲": ["青眼虎", "地察星"], 68 | "杜興": ["鬼臉兒", "地全星"], 69 | "杜遷": ["摸著天", "地妖星"], 70 | "楊春": ["白花蛇", "地隱星"], 71 | "楊林": ["錦豹子", "地暗星"], 72 | "樂和": ["鐵叫子", "地樂星"], 73 | "樊瑞": ["混世魔王", "地然星"], 74 | "歐鵬": ["摩雲金翅", "地闊星"], 75 | "段景住": ["金毛犬", "地狗星"], 76 | "湯隆": ["金錢豹子", "地孤星"], 77 | "焦挺": ["沒面目", "地惡星"], 78 | "燕順": ["錦毛虎", "地強星"], 79 | "王定六": ["活閃婆", "地劣星"], 80 | "王英": ["矮腳虎", "地微星"], 81 | "白勝": ["白日鼠", "地耗星"], 82 | "皇甫端": ["紫髯伯", "地獸星"], 83 | "石勇": ["石將軍", "地醜星"], 84 | "穆春": ["小遮攔", "地鎮星"], 85 | "童威": ["出洞蛟", "地進星"], 86 | "童猛": ["翻江蜃", "地退星"], 87 | "蔡慶": ["一枝花", "地損星"], 88 | "蔡福": ["鐵臂膊", "地平星"], 89 | "蔣敬": ["神算子", "地會星"], 90 | "蕭讓": ["聖手書生", "地文星"], 91 | "薛永": ["病大蟲", "地幽星"], 92 | "裴宣": ["鐵面孔目", "地正星"], 93 | "郁保四": ["險道神", "地健星"], 94 | "郝思文": ["井木犴", "地雄星"], 95 | "郭盛": ["賽仁貴", "地佑星"], 96 | "鄒淵": ["出林龍", "地短星"], 97 | "鄒潤": ["獨角龍", "地角星"], 98 | "鄧飛": ["火眼狻猊", "地闔星"], 99 | "鄭天壽": ["白面郎君", "地異星"], 100 | "金大堅": ["玉臂匠", "地巧星"], 101 | "陳達": ["跳澗虎", "地周星"], 102 | "陶宗旺": ["九尾龜", "地理星"], 103 | "韓滔": ["百勝將", "地威星"], 104 | "項充": ["八臂哪吒", "地飛星"], 105 | "顧大嫂": ["母大蟲", "地陰星"], 106 | "馬麟": ["鐵笛仙", "地明星"], 107 | "魏定國": ["神火將", "地猛星"], 108 | "鮑旭": ["喪門神", "地暴星"], 109 | "黃信": ["鎮三山", "地煞星"], 110 | "龔旺": ["花項虎", "地捷星"], 111 | "耶律輝":[], 112 | "晁蓋": ["托塔天王", "鐵天王"], 113 | "韓伯龍": [], 114 | "王倫": ["白衣秀士"], 115 | "宋太公": [], 116 | "樂大娘子": [], 117 | "張氏": [], 118 | "張教頭": [], 119 | "武大郎": [], 120 | "潘金蓮": [], 121 | "潘巧雲": [], 122 | "扈太公": [], 123 | "扈成": ["飛天虎"], 124 | "祝太公": [], 125 | "柴皇城": [], 126 | "賈氏": [], 127 | "潘公": [], 128 | "宋徽宗": [], 129 | "高俅": [], 130 | "蔡京": [], 131 | "童貫": [], 132 | "楊戩": [], 133 | "宿元景": [], 134 | "劉光世": [], 135 | "王稟": [], 136 | "趙譚": [], 137 | "荊忠": ["荊南崗"], 138 | "陸謙": [], 139 | "董超": [], 140 | "薛霸": [], 141 | "梁世傑": ["梁中書"], 142 | "李成": ["李天王"], 143 | "聞達": ["大刀"], 144 | "周瑾": [], 145 | "時文彬": [], 146 | "何濤": [], 147 | "黃安": [], 148 | "張文遠": ["小張三"], 149 | "何九叔": [], 150 | "陳文昭": [], 151 | "張蒙方": [], 152 | "張團練": [], 153 | "劉高": [], 154 | "蔡得章": [], 155 | "黃文炳": [], 156 | "高廉": [], 157 | "賀太守": ["黃蜂刺"], 158 | "程萬里": [], 159 | "張叔夜": [], 160 | "金翠蓮": [], 161 | "鄭屠": ["鎮關西"], 162 | "智真": [], 163 | "崔道成": ["生鐵佛"], 164 | "邱小乙": ["飛天夜叉"], 165 | "智清": [], 166 | "張三": ["過街老鼠"], 167 | "李四": ["青草蛇"], 168 | "錦兒": [], 169 | "高衙內": ["花花太歲"], 170 | "富安": ["乾鳥頭"], 171 | "洪教頭": [], 172 | "鄧龍": [], 173 | "何清": [], 174 | "閻婆": [], 175 | "閻婆惜": [], 176 | "唐牛兒": ["唐二哥"], 177 | "西門慶": ["西門大官人"], 178 | "王婆": [], 179 | "蔣忠": ["蔣門神"], 180 | "宋玉蓮": [], 181 | "黃文燁": ["黃佛子"], 182 | "李鬼": [], 183 | "裴如海": ["海公", "海闍黎"], 184 | "祝朝奉": [], 185 | "祝龍": [], 186 | "祝虎": [], 187 | "祝彪": [], 188 | "欒廷玉": ["鐵棒"], 189 | "鍾離老人": [], 190 | "毛太公": [], 191 | "毛仲義": [], 192 | "白秀英": [], 193 | "小衙內": [], 194 | "殷天錫": [], 195 | "羅真人": [], 196 | "王義": [], 197 | "玉嬌枝": [], 198 | "曾弄": [], 199 | "曾塗": [], 200 | "曾密": [], 201 | "曾索": [], 202 | "曾魁": [], 203 | "曾昇": [], 204 | "史文恭": [], 205 | "蘇定": [], 206 | "李固": [], 207 | "張旺": ["截江鬼"], 208 | "孫五": ["油裡鰍"], 209 | "李巧奴": [], 210 | "李瑞蘭": [], 211 | "何玄通": [], 212 | "山士奇": [], 213 | "文仲容": [], 214 | "田虎": [], 215 | "田定": [], 216 | "田豹": [], 217 | "田彪": [], 218 | "田實": [], 219 | "唐斌": [], 220 | "崔埜": [], 221 | "喬冽": [], 222 | "孫安": [], 223 | "卞祥": [], 224 | "馬靈": [], 225 | "鄔梨": [], 226 | "瓊英": ["瓊矢鏃"], 227 | "葉清": [], 228 | "寇孚": [], 229 | "沈驥": [], 230 | "董澄": [], 231 | "耿恭": [], 232 | "費珍": [], 233 | "陳凱": [], 234 | "竺敬": [], 235 | "張禮": [], 236 | "趙能": [], 237 | "伍肅": [], 238 | "王慶": [], 239 | "段三娘": [], 240 | "李助": ["金劍先生"], 241 | "段二": [], 242 | "段五": [], 243 | "丘翔": [], 244 | "龔端": [], 245 | "龔正": [], 246 | "范全": [], 247 | "酆泰": [], 248 | "縻貹": [], 249 | "馬犟": [], 250 | "袁朗": [], 251 | "杜博": [], 252 | "胡顯": [], 253 | "畢先": [], 254 | "李雄": [], 255 | "潘忠": [], 256 | "柳元": [], 257 | "劉以敬": [], 258 | "上官義": [], 259 | "方臘": [], 260 | "方貌": [], 261 | "金節": [], 262 | "方天定": [], 263 | "婁敏中": [], 264 | "祖士遠": [], 265 | "鄧元覺": ["寶光如來"], 266 | "石寶": ["南離元帥"], 267 | "厲天閏": ["鎮國元帥"], 268 | "司行方": ["護國元帥"], 269 | "金芝公主": [], 270 | "夏侯成": [], 271 | "鄭彪": ["鄭魔君"], 272 | "包道乙": ["靈應天師"], 273 | "龐萬春": ["小養由基"], 274 | "方垕": [], 275 | "方杰": [], 276 | "伍應星": [], 277 | "錢振鵬": [], 278 | "吳升": [], 279 | "段愷": [], 280 | "弓溫": [], 281 | "家余慶": [], 282 | "嚴勇": [], 283 | "陳觀": [], 284 | "譚高": [], 285 | "劉斌": [], 286 | "元興": [], 287 | "米泉": [], 288 | "鳳儀": [], 289 | "薛鬥南": [], 290 | "廉明": [], 291 | "湯逢士": [], 292 | "茅迪": [], 293 | "王仁": [], 294 | "徐白": [], 295 | "黃愛": [], 296 | "蘇涇": [], 297 | "冷恭": [], 298 | "姚義": [], 299 | "王績": [], 300 | "溫克讓": [], 301 | "吳值": [], 302 | "沈剛": [], 303 | "崔彧": [], 304 | "晁中": [], 305 | "張道原": [], 306 | "呂師囊": [], 307 | "應明": [], 308 | "趙毅": [], 309 | "徐統": [], 310 | "潘文得": [], 311 | "范疇": [], 312 | "和潼": [], 313 | "李師師": [], 314 | "費保": ["赤鬚龍"], 315 | "倪雲": ["捲毛虎"], 316 | "卜青": ["太湖蛟"], 317 | "狄成": ["瘦臉熊"] 318 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_紅樓夢人物.json: -------------------------------------------------------------------------------- 1 | { 2 | "賈演": [], 3 | "賈源": [], 4 | "賈代化": [], 5 | "賈代善": [], 6 | "賈代儒": [], 7 | "賈代修": [], 8 | "賈敷": [], 9 | "賈敬": [], 10 | "賈赦": [], 11 | "賈政": [], 12 | "賈敏": [], 13 | "賈敕": [], 14 | "賈效": [], 15 | "賈敦": [], 16 | "賈珍": [], 17 | "賈璉": [], 18 | "賈琮": [], 19 | "賈珠": [], 20 | "賈寶玉": [], 21 | "賈環": [], 22 | "賈瑞": [], 23 | "賈璜": [], 24 | "賈珩": [], 25 | "賈㻞": [], 26 | "賈珖": [], 27 | "賈琛": [], 28 | "賈瓊": [], 29 | "賈璘": [], 30 | "賈元春": [], 31 | "賈迎春": [], 32 | "賈探春": [], 33 | "賈惜春": [], 34 | "喜鸞 ": [], 35 | "四姐 ": [], 36 | "賈蓉": [], 37 | "賈蘭": [], 38 | "賈薔": [], 39 | "賈菌": [], 40 | "賈芸": [], 41 | "賈芹": [], 42 | "賈萍": [], 43 | "賈菖": [], 44 | "賈菱": [], 45 | "賈蓁": [], 46 | "賈藻": [], 47 | "賈蘅": [], 48 | "賈芬": [], 49 | "賈芳": [], 50 | "賈芝": [], 51 | "賈荇": [], 52 | "賈芷": [], 53 | "賈葛": [], 54 | "賈巧姐 ": [], 55 | "史太君": [], 56 | "史鼐": [], 57 | "史鼎": [], 58 | "史湘雲": [], 59 | "王子騰": [], 60 | "王子勝": [], 61 | "王夫人": [], 62 | "薛姨媽 ": [], 63 | "王仁": [], 64 | "王熙鳳": [], 65 | "薛蟠": [], 66 | "薛蝌": [], 67 | "薛寶釵": [], 68 | "薛寶琴": [], 69 | "林黛玉": [], 70 | "妙玉": [], 71 | "邢夫人": [], 72 | "尤氏": [], 73 | "李紈": [], 74 | "秦可卿": [], 75 | "賈蓉之妻": [], 76 | "胡氏": [], 77 | "香菱": [], 78 | "趙姨娘": [], 79 | "劉姥姥": [], 80 | "甄寶玉": [], 81 | "襲人": [], 82 | "媚人": [], 83 | "晴雯": [], 84 | "綺霰": [], 85 | "麝月": [], 86 | "檀雲": [], 87 | "秋紋": [], 88 | "碧浪": [], 89 | "茜雪": [], 90 | "春燕": [], 91 | "墜兒": [], 92 | "四兒": [], 93 | "佳蕙": [], 94 | "抱琴": [], 95 | "司棋": [], 96 | "蓮花兒": [], 97 | "繡橘": [], 98 | "待書": [], 99 | "翠墨": [], 100 | "蟬姐": [], 101 | "入畫": [], 102 | "彩屏": [], 103 | "紫鵑": [], 104 | "雪雁": [], 105 | "春纖": [], 106 | "鴛鴦": [], 107 | "琥珀": [], 108 | "珍珠": [], 109 | "玻璃": [], 110 | "翡翠": [], 111 | "鸚鵡": [], 112 | "靛兒": [], 113 | "傻大姐": [], 114 | "銀蝶": [], 115 | "炒豆兒": [], 116 | "卐兒": [], 117 | "鶯兒": [], 118 | "文杏": [], 119 | "平兒": [], 120 | "小紅": [], 121 | "豐兒": [], 122 | "金釧": [], 123 | "玉釧": [], 124 | "繡鸞": [], 125 | "繡鳳": [], 126 | "彩雲": [], 127 | "彩霞": [], 128 | "素雲": [], 129 | "同喜": [], 130 | "同貴": [], 131 | "縷兒": [], 132 | "翠縷": [], 133 | "寶珠": [], 134 | "瑞珠": [], 135 | "姣杏": [], 136 | "小螺": [], 137 | "善姐": [], 138 | "臻兒": [], 139 | "篆兒": [], 140 | "小吉祥兒": [], 141 | "小鵲": [], 142 | "小舍兒": [], 143 | "寶蟾": [], 144 | "茗煙": [], 145 | "焦大": [], 146 | "李貴": [], 147 | "鋤藥": [], 148 | "墨雨": [], 149 | "伴鶴": [], 150 | "掃花": [], 151 | "引泉": [], 152 | "挑芸": [], 153 | "雙瑞": [], 154 | "雙壽": [], 155 | "來旺": [], 156 | "興兒": [], 157 | "王榮": [], 158 | "錢啟": [], 159 | "張若錦": [], 160 | "趙亦華": [], 161 | "錢槐": [], 162 | "小玄兒": [], 163 | "隆兒": [], 164 | "昭兒": [], 165 | "喜兒": [], 166 | "住兒": [], 167 | "壽兒": [], 168 | "杏奴": [], 169 | "慶兒": [], 170 | "王信": [], 171 | "芳官": [], 172 | "齡官": [], 173 | "蕊官": [], 174 | "藕官": [], 175 | "荳官": [], 176 | "寶官": [], 177 | "文官": [], 178 | "茄官": [], 179 | "菂官": [], 180 | "艾官": [], 181 | "玉官": [], 182 | "葵官": [], 183 | "頑石": [], 184 | "茫茫大士": [], 185 | "渺渺真人": [], 186 | "空空道人": [], 187 | "甄士隱": [], 188 | "封氏": [], 189 | "小童": [], 190 | "神瑛侍者": [], 191 | "絳珠仙子": [], 192 | "警幻仙子": [], 193 | "賈雨村": [], 194 | "嚴老爺": [], 195 | "霍啟": [], 196 | "封肅": [], 197 | "冷子興": [], 198 | "林如海": [], 199 | "李嬤嬤": [], 200 | "王嬤嬤": [], 201 | "門子": [], 202 | "李守中": [], 203 | "馮淵": [], 204 | "拐子": [], 205 | "痴夢仙姑": [], 206 | "引愁金女": [], 207 | "鍾情大士": [], 208 | "度恨菩提": [], 209 | "王成": [], 210 | "劉氏": [], 211 | "板兒": [], 212 | "青兒": [], 213 | "周瑞": [], 214 | "周瑞家的": [], 215 | "智能": [], 216 | "余信": [], 217 | "余信家的": [], 218 | "秦鍾": [], 219 | "賴二": [], 220 | "詹光": [], 221 | "戴良": [], 222 | "錢華": [], 223 | "單聘仁": [], 224 | "吳新登": [], 225 | "秦業": [], 226 | "金氏": [], 227 | "馮唐": [], 228 | "張友士": [], 229 | "戴權": [], 230 | "張材家的": [], 231 | "牛清": [], 232 | "牛繼宗": [], 233 | "柳彪": [], 234 | "柳芳": [], 235 | "陳翼": [], 236 | "陳瑞文": [], 237 | "馬魁": [], 238 | "馬尚": [], 239 | "侯曉明": [], 240 | "侯孝康": [], 241 | "石光珠": [], 242 | "蔣子寧": [], 243 | "謝鯨": [], 244 | "戚建輝": [], 245 | "裘良": [], 246 | "馮紫英": [], 247 | "陳也俊": [], 248 | "衛若蘭": [], 249 | "水溶": [], 250 | "二丫頭": [], 251 | "淨虛": [], 252 | "智善": [], 253 | "胡老爺": [], 254 | "金哥": [], 255 | "李公子": [], 256 | "雲光": [], 257 | "夏守忠": [], 258 | "賴大": [], 259 | "趙嬤嬤": [], 260 | "吳天佑": [], 261 | "吳貴妃": [], 262 | "卜固修": [], 263 | "山子野": [], 264 | "林之孝": [], 265 | "程日興": [], 266 | "昭容": [], 267 | "彩繽": [], 268 | "花母": [], 269 | "花自芳": [], 270 | "多官": [], 271 | "多姑娘": [], 272 | "王嫂子": [], 273 | "周氏": [], 274 | "卜世仁": [], 275 | "銀姐": [], 276 | "倪二": [], 277 | "王短腿": [], 278 | "林之孝家的": [], 279 | "方椿": [], 280 | "馬道婆": [], 281 | "周姨娘": [], 282 | "胡斯來": [], 283 | "鮑太醫": [], 284 | "王濟仁": [], 285 | "蔣玉菡": [], 286 | "雲兒": [], 287 | "張道士": [], 288 | "周奶娘": [], 289 | "傅試": [], 290 | "傅秋芳": [], 291 | "宋嬤嬤": [], 292 | "茗玉": [], 293 | "王君效": [], 294 | "賴大的母親": [], 295 | "鮑二家的": [], 296 | "金彩": [], 297 | "金文翔": [], 298 | "嫣紅": [], 299 | "柳湘蓮": [], 300 | "賴尚榮": [], 301 | "邢岫煙": [], 302 | "邢忠": [], 303 | "李嬸娘": [], 304 | "李紋": [], 305 | "李綺": [], 306 | "梅翰林": [], 307 | "胡君榮": [], 308 | "良兒": [], 309 | "烏進孝": [], 310 | "婁氏": [], 311 | "女先兒": [], 312 | "單大良": [], 313 | "趙國基": [], 314 | "單大娘": [], 315 | "祝媽": [], 316 | "田媽": [], 317 | "葉媽": [], 318 | "許氏": [], 319 | "何婆子": [], 320 | "小鳩兒": [], 321 | "夏婆子": [], 322 | "柳家的": [], 323 | "柳五兒": [], 324 | "秦顯家的": [], 325 | "佩鳳": [], 326 | "偕鸞": [], 327 | "尤二姐": [], 328 | "尤三姐": [], 329 | "尤老娘": [], 330 | "張華": [], 331 | "俞祿": [], 332 | "秋桐": [], 333 | "天文生": [], 334 | "潘又安": [], 335 | "朱大娘": [], 336 | "周太監": [], 337 | "小霞": [], 338 | "翠雲": [], 339 | "來喜家的": [], 340 | "王善保家的": [], 341 | "張媽": [], 342 | "邢德全": [], 343 | "文花": [], 344 | "圓信": [], 345 | "智通": [], 346 | "孫紹祖": [], 347 | "夏金桂": [], 348 | "夏奶奶": [], 349 | "王一貼": [] 350 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_西遊記人物.json: -------------------------------------------------------------------------------- 1 | { 2 | "唐三藏": ["玄奘", "唐玄奘", "三藏", "唐三藏"], 3 | "孫悟空": ["美猴王", "齊天大聖", "鬥戰勝佛"], 4 | "豬八戒": ["豬悟能", "二師兄", "天蓬元帥", "豬剛鬛", "淨壇使者"], 5 | "法悟淨": ["捲簾大將", "金身羅漢"], 6 | "白龍馬": ["八部天龍馬"], 7 | "如來佛祖": ["如來", "佛祖", "釋迦牟尼佛"], 8 | "燃燈古佛": [], 9 | "彌勒佛": [], 10 | "觀音菩薩": ["觀世音菩薩"], 11 | "文殊菩薩": [], 12 | "普賢菩薩": [], 13 | "地藏王菩薩": ["幽冥教主"], 14 | "菩提祖師": ["菩提老祖"], 15 | "烏巢禪師": [], 16 | "阿難": [], 17 | "伽葉": [], 18 | "靈吉菩薩": [], 19 | "毗藍婆菩薩": [], 20 | "孔雀明王": [], 21 | "至勝金剛": [], 22 | "潑法金剛": [], 23 | "大力金剛": [], 24 | "永住金剛": [], 25 | "十八羅漢": [], 26 | "玉皇大帝": ["玉帝"], 27 | "西王母": [], 28 | "三清道祖": [], 29 | "元始天尊": [], 30 | "靈寶天尊": [], 31 | "太上老君": [], 32 | "天皇大帝": [], 33 | "紫微大帝": [], 34 | "長生大帝": [], 35 | "青華大帝": ["太乙救苦天尊"], 36 | "佛老": [], 37 | "菩薩": [], 38 | "聖僧": [], 39 | "羅漢": [], 40 | "南極觀音": [], 41 | "崇恩聖帝": [], 42 | "十洲三島仙翁": [], 43 | "北極玄靈": [], 44 | "黃角大仙": [], 45 | "驪山老母": [], 46 | "東華帝君": [], 47 | "真武大帝": ["蕩魔天尊", "北方真武玄天上帝", "九天降魔祖師", "玄武元帥"], 48 | "太玄水精黑靈尊神": [], 49 | "太玄火精赤靈尊神": [], 50 | "千里眼": ["高明"], 51 | "順風耳": ["高覺"], 52 | "雷公": [], 53 | "電母": [], 54 | "風伯": [], 55 | "雨師": [], 56 | "推雲童子": [], 57 | "布霧郎君": [], 58 | "大力鬼王": [], 59 | "木德星君": [], 60 | "火德星君": [], 61 | "金德星君": ["太白金星"], 62 | "水德星君": [], 63 | "土德星君": [], 64 | "赤腳大仙": [], 65 | "太陽星君": [], 66 | "太陰星君": ["嫦娥"], 67 | "天佑元帥": [], 68 | "九曜星": [], 69 | "日遊神": [], 70 | "夜遊神": [], 71 | "李靖": ["托塔天王"], 72 | "金吒": [], 73 | "木吒": [], 74 | "哪吒": [], 75 | "巨靈神": [], 76 | "九天應元雷聲普化天尊": [], 77 | "王靈官": [], 78 | "佑聖真君": [], 79 | "持國天王": [], 80 | "增長天王": [], 81 | "廣目天王": [], 82 | "多聞天王": [], 83 | "張道凌": [], 84 | "葛洪": [], 85 | "許遜": ["敬之", "許敬之", "許旌陽"], 86 | "邱弘濟": [], 87 | "楊戩": ["二郎神"], 88 | "哮天犬": [], 89 | "郭申": [], 90 | "直健": [], 91 | "青龍": [], 92 | "角木蛟": [], 93 | "亢金龍": [], 94 | "氐土貉": [], 95 | "房日兔": [], 96 | "心月狐": [], 97 | "尾火虎": [], 98 | "箕水豹": [], 99 | "玄武": [], 100 | "斗木獬": [], 101 | "牛金牛": [], 102 | "女土蝠": [], 103 | "虛日鼠": [], 104 | "危月燕": [], 105 | "室火豬": [], 106 | "壁水貐": [], 107 | "白虎": [], 108 | "奎木狼": ["黃袍怪"], 109 | "婁金狗": [], 110 | "胃土雉": [], 111 | "昴日雞": [], 112 | "畢月烏": [], 113 | "觜火猴": [], 114 | "參水猿": [], 115 | "朱雀": [], 116 | "井木犴": [], 117 | "鬼金羊": [], 118 | "柳土獐": [], 119 | "星日馬": [], 120 | "張月鹿": [], 121 | "翼火蛇": [], 122 | "軫水蚓": [], 123 | "李丙": [], 124 | "黃承孔": [], 125 | "周登": [], 126 | "劉洪": [], 127 | "金光揭諦": [], 128 | "銀頭揭諦": [], 129 | "波羅揭諦": [], 130 | "波羅僧揭諦": [], 131 | "摩訶揭諦": [], 132 | "玉女": [], 133 | "司馬卿": [], 134 | "崔巨卿": [], 135 | "石叔通": [], 136 | "臧文公": [], 137 | "張文通": [], 138 | "趙子玉": [], 139 | "玉男": [], 140 | "王文卿": [], 141 | "展子江": [], 142 | "扈文長": [], 143 | "衛玉卿": [], 144 | "孟非卿": [], 145 | "明文章": [], 146 | "司命星君": [], 147 | "司祿星君": [], 148 | "延壽星君": [], 149 | "益算星君": [], 150 | "度厄星君": [], 151 | "上生星君": [], 152 | "陽明貪狼星君": [], 153 | "陰精巨門星君": [], 154 | "真人祿存星君": [], 155 | "玄冥文曲星君": [], 156 | "丹元廉貞星君": [], 157 | "北極武曲星君": [], 158 | "天關破軍星君": [], 159 | "敖廣": ["東海龍王"], 160 | "敖欽": ["南海龍王"], 161 | "敖閏": ["西海龍王"], 162 | "敖順": ["北海龍王"], 163 | "涇河龍王": [], 164 | "井龍王": [], 165 | "秦廣王": [], 166 | "楚江王": [], 167 | "宋帝王": [], 168 | "五官王": [], 169 | "閻羅王": [], 170 | "平等王": [], 171 | "泰山王": [], 172 | "都市王": [], 173 | "卞城王": [], 174 | "轉輪王": [], 175 | "城隍": [], 176 | "土地神": [], 177 | "山神": [], 178 | "力士": [], 179 | "混世魔王": [], 180 | "寅將軍": ["熊山軍", "特處士"], 181 | "黑風怪": ["白衣秀士", "凌虛子"], 182 | "黃風怪": [], 183 | "鎮元大仙": ["鎮元子"], 184 | "白骨精": ["白骨夫人", "屍魔"], 185 | "黃袍怪": [], 186 | "金角大王、": [], 187 | "銀角大王": [], 188 | "獅猁怪": [], 189 | "紅孩兒": [], 190 | "鼉龍": [], 191 | "虎力大仙": [], 192 | "鹿力大仙": [], 193 | "羊力大仙": [], 194 | "靈感大王": [], 195 | "獨角兕大王": [], 196 | "如意真仙": [], 197 | "女兒國國王": [], 198 | "蝎子精": ["蠍子精"], 199 | "六耳獼猴": [], 200 | "牛魔王": ["平天大聖"], 201 | "萬聖龍宮": [], 202 | "樹精": ["勁節十八公", "孤直公", "凌空子", "拂雲叟", "杏仙", "赤身鬼"], 203 | "黃眉大王": [], 204 | "蟒蛇精": [], 205 | "賽太歲": [], 206 | "蜘蛛精": ["百眼魔君", "多目怪"], 207 | "青毛獅子": [], 208 | "黃牙老象": [], 209 | "大鵬金翅鳥": [], 210 | "白鹿精": [], 211 | "白面狐狸精": [], 212 | "地涌夫人": [], 213 | "滅法國國王": [], 214 | "南山大王": [], 215 | "九靈元聖": [], 216 | "辟寒大王": [], 217 | "辟暑大王": [], 218 | "辟塵大王": [], 219 | "玉兔精": [], 220 | "大白龜": [] 221 | } -------------------------------------------------------------------------------- /Public_UserDefinedDict/KNOWLEDGE_音譯外來語工具名稱.json: -------------------------------------------------------------------------------- 1 | { 2 | "立巴":["斜口鉗", "ニッパー"], 3 | "普賴亞":["鯉魚鉗", "プライヤー"], 4 | "久洗普賴亞":["矯正鉗", "矯正プライヤー"], 5 | "亞條":["牙條", "螺桿"], 6 | "巴辣片吉":["華司墊片"], 7 | "司板那":["老虎鉗", "ベンチ", "片吉"], 8 | "沒力啊邦":["美耐板"], 9 | "空杯啊":[], 10 | "夢吉":[], 11 | "爬普鏈記":["水管鉗"], 12 | "歪啊澀":["鋼索", "細繩"], 13 | "森搭":["サンダ", "sander", "手持砂磨機"], 14 | "恐怖練薩":["コンプレッサー", "air compressor", "空氣壓縮機"], 15 | "共頹呀":["鐵鎚"], 16 | "呼練打":["グラインダー", "grindr", "古鏈打", "手持砂輪機"], 17 | "貼不西嚕":["テープシール", "止洩膠帶"], 18 | "肉嚕":["バール", "crowbar", "拔釘器", "bar", "巴魯"], 19 | "阿嚕":[], 20 | "耶啊練擠":[], 21 | "魔哭司":[], 22 | "胎啊累把":[], 23 | "內奶":[], 24 | "泰嚕":["磁磚"], 25 | "妹搭":[], 26 | "雷扣拉":[], 27 | "尚首":[], 28 | "踏部":[], 29 | "歪斯":[], 30 | "樓膩斯":[], 31 | "起立":[], 32 | "森搭起立":[], 33 | "賣耶領估":["培林", "軸承"], 34 | "巴疊立":["電池", "battery", "バッテリー", "巴爹利"], 35 | "嘛部累都":[], 36 | "某搭":["モーター", "motor", "馬達"], 37 | "普累尬":["ブレーカ", "No Fuse Breaker", "NFB", "無熔絲開關", "斷路器"], 38 | "卡里卡里":["棘輪扳手"], 39 | "阿收逼":["間隙", "誤差"], 40 | "久洗夢吉":[], 41 | "ㄧ擺":[], 42 | "煞迫多":[], 43 | "硬擠":["インチ", "inch", "英寸"], 44 | "練機":["扳手"], 45 | "肉利啊":["毛邊"], 46 | "含都入":["handler", "方向盤"], 47 | "藍啊控":["水泥", "水泥預拌車"], 48 | "零夠車":["貓車", "ねこ車", "獨輪車"], 49 | "麥機沙":["mixer", "攪拌機", "場拌混凝土機"], 50 | "夏吧":["shovel", "鏟土車"], 51 | "清仔車":[], 52 | "漏啦":[], 53 | "矽利康":["silicone", "シリコーン"], 54 | "膨拱":[], 55 | "泰魯":["磁磚", "tile", "タイル"], 56 | "美麗亞":["木合板", "plywood", "ベニヤ"], 57 | "添ㄅㄥˊ":["天花板"], 58 | "燙俗":["衣櫃"], 59 | "哈媽ㄎ一":["踢腳板", "幅木", "はばき"], 60 | "雷扣喇":["咪尼壓幫"], 61 | "阿魯米":["aluminum", "アルミ", "鋁"], 62 | "麻吉":[], 63 | "西阿給":[], 64 | "哈利":["大梁", "樑"], 65 | "歐多利吧":[], 66 | "嘻沙西":[], 67 | "親ㄍㄣˋ給":[], 68 | "吊搞": ["吊猴"], 69 | "Ki阿":[], 70 | "速僅":[], 71 | "外部":[], 72 | "速底":[], 73 | "歪阿縮":["wire", "ワイア", "鋼索"], 74 | "阿恩卡":["anchor"], 75 | "雷魯":["rail"], 76 | "南媽控": ["拉嗎控", "預拌混凝土"], 77 | "梅呀另古":["軸承"], 78 | "卡多羅庫": ["卡達摟古", "catalog", "カタログ", "型録"], 79 | "厚速共":["hose", "塑膠水管", "軟管"], 80 | "片吉":[], 81 | "樓賴吧":["ドライバー", "driver", "螺絲起子"], 82 | "阿速哩":["銼刀"], 83 | "斯癲雷斯":["stainless", "不銹鋼"], 84 | "白鐵仔":[], 85 | "ㄟ波西":["樹脂"], 86 | "巴達":["bat"], 87 | "速巴拉":[], 88 | "卡沙":[], 89 | "哇夏":[], 90 | "三搜": ["桑搜", "酸素アセチレン炎", "乙炔熔接"], 91 | "希阿": ["黑鐵"], 92 | "麻魯姆":["valve", "バルブ", "閥"], 93 | "天麻":["天端", "てんば"], 94 | "定尺":[], 95 | "模哭斯":[], 96 | "福鍊吉":["flange", "フランジ", "輪緣"], 97 | "空不雷沙":["compressor", "空氣壓縮機"], 98 | "ㄟ呀":["air"], 99 | "ㄟ呀鍊吉":["氣動板手", "氣動起子"], 100 | "不雷卡": ["不勒嘎", "breaker", "無熔絲斷路器", "混凝土破碎鎚"], 101 | "水秤":[], 102 | "線答":[], 103 | "扶練答":[], 104 | "貼布吸入":["止水帶", "止洩帶"], 105 | "點輝跛": ["電火布", "電氣絕緣膠帶"], 106 | "點估": ["電龜", "電銲機"], 107 | "阿嚕夢":["氬銲機"], 108 | "壁虎":["膨脹螺絲"], 109 | "歐阿令股": ["歐令", "o-ring", "O型環"], 110 | "落卡達":[], 111 | "布羅庫":["block"], 112 | "阿縮比":[], 113 | "嘿麥": ["嘿唄", "square meter", "平米", "へいべい"], 114 | "摩令估":[], 115 | "速拉不":["slab"], 116 | "出盹":[], 117 | "碰共": ["膨管"], 118 | "一拜一拜":[], 119 | "叩敗":[], 120 | "棒共": ["放管"], 121 | "田就":["天井", "てんじょう", "天花板"], 122 | "八啦北多":["parapet", "パラペット", "女兒牆"], 123 | "風頭壁":[], 124 | "福輪達":["grinder"], 125 | "夏水":[], 126 | "卡電":["curtain", "カーテン", "窗簾"] 127 | } -------------------------------------------------------------------------------- /Sample_Code/Java/ArticutExample.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.BufferedWriter; 3 | import java.io.InputStream; 4 | import java.io.InputStreamReader; 5 | import java.io.OutputStream; 6 | import java.io.OutputStreamWriter; 7 | import java.net.HttpURLConnection; 8 | import java.net.URL; 9 | import org.json.JSONObject; 10 | 11 | 12 | public class ArticutExample { 13 | 14 | /** 15 | * @param args the command line arguments 16 | */ 17 | public static void main(String[] args) { 18 | HttpURLConnection urlConnection = null; 19 | URL url = null; 20 | try { 21 | url = new URL("https://api.droidtown.co/Articut/API/"); 22 | urlConnection = (HttpURLConnection) url.openConnection(); 23 | urlConnection.setRequestMethod("POST"); 24 | urlConnection.setRequestProperty("Content-Type", "application/json; utf-8"); 25 | urlConnection.setRequestProperty("Accept", "application/json"); 26 | urlConnection.setDoOutput(true); 27 | urlConnection.setDoInput(true); 28 | 29 | // Articut Parameters 30 | JSONObject requestJson = new JSONObject(); 31 | requestJson.put("username", ""); 32 | requestJson.put("api_key", ""); 33 | requestJson.put("input_str", "努力才能成功"); 34 | requestJson.put("version", "latest"); 35 | requestJson.put("level", "lv2"); 36 | 37 | // Send Request 38 | OutputStream out = urlConnection.getOutputStream(); 39 | BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out)); 40 | bw.write(requestJson.toString()); 41 | bw.flush(); 42 | out.close(); 43 | bw.close(); 44 | 45 | if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) { 46 | InputStream in = urlConnection.getInputStream(); 47 | BufferedReader br = new BufferedReader(new InputStreamReader(in)); 48 | String str = null; 49 | StringBuffer buffer = new StringBuffer(); 50 | while ((str = br.readLine()) != null) { 51 | buffer.append(str); 52 | } 53 | in.close(); 54 | br.close(); 55 | JSONObject resultJson = new JSONObject(buffer.toString()); 56 | System.out.println("status: " + resultJson.getBoolean("status")); 57 | System.out.println("msg: " + resultJson.getString("msg")); 58 | System.out.println("result_pos: " + resultJson.getJSONArray("result_pos").toString()); 59 | System.out.println("result_segmentation: " + resultJson.getString("result_segmentation")); 60 | System.out.println("exec_time: " + resultJson.getFloat("exec_time")); 61 | System.out.println("version: " + resultJson.getString("version")); 62 | System.out.println("level: " + resultJson.getString("level")); 63 | System.out.println("word_count_balance: " + resultJson.getInt("word_count_balance")); 64 | } 65 | 66 | urlConnection.disconnect(); 67 | } catch (Exception e) { 68 | System.out.println(e.getMessage()); 69 | } 70 | } 71 | 72 | } 73 | -------------------------------------------------------------------------------- /Sample_Code/Java/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ArticutExample.java 需配合 "https://mvnrepository.com/artifact/org.json/json/20190722" 使用。 2 | 請自行下載。 3 | -------------------------------------------------------------------------------- /Sample_Code/JavaScript/Articut_JavaScript.js: -------------------------------------------------------------------------------- 1 | var url = "https://api.droidtown.co/Articut/API/"; 2 | 3 | var xhr = new XMLHttpRequest(); 4 | xhr.open("POST", url); 5 | 6 | xhr.setRequestHeader("Accept", "application/json"); 7 | xhr.setRequestHeader("Content-Type", "application/json"); 8 | 9 | xhr.onreadystatechange = function () { 10 | if (xhr.readyState === 4) { 11 | console.log(xhr.status); 12 | console.log(xhr.responseText); 13 | }}; 14 | 15 | var data = `{ 16 | "username":"", 17 | "api_key" :"", 18 | "input_str":"我想過過過兒過過的日子"}`; 19 | 20 | xhr.send(data); 21 | -------------------------------------------------------------------------------- /Sample_Code/JavaScript/Articut_jQuery.js: -------------------------------------------------------------------------------- 1 | < script src = "//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js" > < /script> < 2 | script > 3 | var articutResult = null; 4 | $(document).ready(function() { 5 | alert('Demo 開始! Articut\'s indexWithPOS'); 6 | // 取得 Articut 的斷詞結果 7 | doArticut('蔡英文到宜蘭低調拜訪林義雄', ['get_person']); 8 | }); 9 | 10 | function doArticut(text) { 11 | $.post({ 12 | url: "https://api.droidtown.co/Articut/API/", 13 | dataType: "json", 14 | contentType: 'application/json; charset=UTF-8', 15 | data: JSON.stringify({ 16 | "username": "", 17 | "api_key": "", 18 | "input_str": text 19 | }), 20 | success: function(response) { 21 | if (response.status) { 22 | articutResult = response; 23 | $("#result_pos").text(articutResult.result_pos); 24 | // 將 Articut 的斷詞結果送入 /Addons 取得「人名列表」。 25 | doArticutAddons(articutResult.result_pos, true); 26 | doArticutAddons(articutResult.result_pos, false); 27 | } 28 | } 29 | }); 30 | } 31 | 32 | function doArticutAddons(resultPos, indexWithPos) { 33 | $.post({ 34 | url: "https://api.droidtown.co/Articut/Addons/", 35 | contentType: 'application/json; charset=UTF-8', 36 | data: JSON.stringify({ 37 | "username": "", //您註冊時的 email。若留空,則會使用每日 1 萬字的公用帳號。 38 | "api_key": "", //您完成付費後取得的 apikey 值。若留空,則會使用每日 1 萬字的公用帳號。 39 | "result_pos": resultPos, 40 | "func": ['get_person'], //這裡以「取得人名」為例 41 | "index_with_pos": indexWithPos //index_with_pos 的預設值為 true 42 | }), 43 | success: function(response) { 44 | if (response.status) { 45 | $("#indexWithPOS_" + indexWithPos).text(response.results.person_list); 46 | } 47 | } 48 | }); 49 | } < 50 | /script> 51 | 52 | < 53 | h3 > < div > POS Result: < /div> 55 | < 56 | div id = "result_pos" > < /div>
< 57 | h3 > < div > 取得人名列表 < /div> 59 | < 60 | h4 > < div > indexWithPOS = True(預設值) < /div> 62 | < 63 | div id = "indexWithPOS_true" > < /div> < 64 | h4 > < div > indexWithPOS = False < /div> 66 | < 67 | div id = "indexWithPOS_false" > < /div> -------------------------------------------------------------------------------- /Sample_Code/R/ArticutExample.R: -------------------------------------------------------------------------------- 1 | library(httr) 2 | library(jsonlite) 3 | 4 | articutAPIurl <- "https://api.droidtown.co/Articut/API/" 5 | headers <- c('Accept'='application/json', 'Content-Type'='application/json') 6 | 7 | payload <- jsonlite::toJSON(list(username="", 8 | api_key="", 9 | input_str="我也想過過過兒過過的日子"), 10 | auto_unbox=TRUE) 11 | result <- POST(articutAPIurl, body=payload, add_headers(.headers=headers)) 12 | 13 | jsonlite::toJSON(content(result)) -------------------------------------------------------------------------------- /Screenshots/Articut-GraphQL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Screenshots/Articut-GraphQL.png -------------------------------------------------------------------------------- /Screenshots/Articut-GraphQL_Example01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Screenshots/Articut-GraphQL_Example01.png -------------------------------------------------------------------------------- /Screenshots/Articut-GraphQL_Example02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Screenshots/Articut-GraphQL_Example02.png -------------------------------------------------------------------------------- /Screenshots/GraphiQL_Example01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Screenshots/GraphiQL_Example01.png -------------------------------------------------------------------------------- /Screenshots/GraphiQL_Example02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Screenshots/GraphiQL_Example02.png -------------------------------------------------------------------------------- /Screenshots/attributes_of_doc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Screenshots/attributes_of_doc.gif -------------------------------------------------------------------------------- /Screenshots/attributes_of_doc_EN.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Screenshots/attributes_of_doc_EN.gif -------------------------------------------------------------------------------- /Screenshots/ner_of_doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Screenshots/ner_of_doc.png -------------------------------------------------------------------------------- /Screenshots/requests_installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Droidtown/ArticutAPI/9ac4b7cd1a33526d27dcb84e745c2d607d07cb9e/Screenshots/requests_installer.png -------------------------------------------------------------------------------- /WS_ArticutAPI.py: -------------------------------------------------------------------------------- 1 | ArticutAPI/WS_ArticutAPI.py -------------------------------------------------------------------------------- /Windows_Module_Installer/ReadMe.md: -------------------------------------------------------------------------------- 1 | #Windows Module Installer 2 | #Windows 作業系統 模組安裝器 3 | 4 | ## 注意!本工具僅適用 Windows 作業系統 5 | 6 | ### requests_installer.py 使用方法: 7 | 8 | #### 方法一、使用命令提示字元安裝 9 | 1. 用 `cmd` 啟動**命令提示字元** 視窗 10 | 2. 用 `cd` 指令切換到 **requests_installer.py** 目錄下 11 | 3. 用 `python requests_installer.py` 指令,啟動 requests 模組安裝程式 12 | 4. 程式將列出你的系統中所有的 **Python 環境** 13 | 範例: 14 | > 1). C:\Users\user\Miniconda3\python.exe 15 | > 2). C:\Users\user\Anaconda3\python.exe 16 | > 3). C:\Users\user\AppData\Local\Programs\Python\Python38-32\python.exe 17 | > 4). C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe 18 | 5. 於 **您選擇(輸入數字):** 後方以數字方式(即1,2,3,4)輸入您想安裝到的目的地 19 | 6. 如安裝完成便會顯示 **裝...好啦** 的字樣 20 | 7. 如安裝上有問題,便會顯示 **"呃…好像出了什麼錯,總之是沒裝成功。請把這個畫面擷圖傳給 info@droidtown.co ,我們會再做調整。"** 字樣,再請您與我們聯繫 :) 21 | 22 | #### 方法二、使用IDE(例如Wing)安裝 23 | ![](https://github.com/Droidtown/ArticutAPI/blob/master/Screenshots/requests_installer.png) 24 | 1. 執行**requests_installer.py** 25 | 2. 程式將列出你的系統中所有的 **Python 環境** 26 | 範例: 27 | > 1). C:\Users\user\Miniconda3\python.exe 28 | > 2). C:\Users\user\Anaconda3\python.exe 29 | > 3). C:\Users\user\AppData\Local\Programs\Python\Python38-32\python.exe 30 | > 4). C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe 31 | 3. 於 **您選擇(輸入數字):** 後方以數字方式(即1,2,3,4)輸入您想安裝到的目的地 32 | 4. 如安裝完成便會顯示 **裝...好啦** 的字樣 33 | 5. 如安裝上有問題,便會顯示 **"呃…好像出了什麼錯,總之是沒裝成功。請把這個畫面擷圖傳給 info@droidtown.co ,我們會再做調整。"** 字樣,再請您與我們聯繫 :) 34 | 35 | ### 以上是範例,和您的實際情況可能稍有不同 36 | 37 | -------------------------------------------------------------------------------- /Windows_Module_Installer/requests_installer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding:utf-8 -*- 3 | 4 | __author__ = ["jacksugood@gmail.com", "60621032L@gapps.ntnu.edu.tw"] 5 | 6 | import os 7 | import platform 8 | 9 | 10 | def main(moduleNameSTR): 11 | pythonLIST = [p for p in os.popen("where python").read().split("\n") if p !=""] 12 | 13 | print("請選擇要安裝 {} 模組的版本".format(moduleNameSTR)) 14 | for i in range(0, len(pythonLIST)): 15 | print("{}). {}".format(i+1, pythonLIST[i])) 16 | 17 | pythonSelection = int(input("您選擇(輸入數字):")) 18 | if pythonSelection in range(1, len(pythonLIST)+1): 19 | if "conda" in pythonLIST[pythonSelection-1]: 20 | os.system("conda install {}".format(moduleNameSTR)) 21 | else: 22 | try: 23 | os.system("{} -m pip install {}".format(pythonLIST[pythonSelection-1], moduleNameSTR)) 24 | print("裝…好啦!") 25 | except: 26 | print("呃…好像出了什麼錯,總之是沒裝成功。請把這個畫面擷圖傳給 info@droidtown.co ,我們會再做調整。") 27 | else: 28 | print("看不懂你在選什麼,請重新執行一次。") 29 | 30 | 31 | 32 | if __name__== "__main__": 33 | moduleNameSTR = "requests" #以後如果要裝別的就直接在這一行改就可以了喔 把requests換成你的packages的名字 34 | 35 | if platform.system().lower() == "windows": 36 | main(moduleNameSTR) 37 | else: 38 | print("這個安裝程式是給 Windows 使用的!") 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | with open("README.md", "r", encoding="utf-8") as fh: 4 | long_description = fh.read() 5 | 6 | setuptools.setup( 7 | name="ArticutAPI", 8 | version="1.3.7", 9 | author="Droidtown Linguistic Tech. Co. Ltd.", 10 | author_email="info@droidtown.co", 11 | description="Articut NLP system provides not only finest results on Chinese word segmentaion (CWS), Part-of-Speech tagging (POS) and Named Entity Recogintion tagging (NER), but also the fastest online API service in the NLP industry.", 12 | long_description=long_description, 13 | long_description_content_type="text/markdown", 14 | url="https://github.com/Droidtown/ArticutAPI", 15 | project_urls={ 16 | "Documentation": "https://api.droidtown.co/ArticutAPI/document/", 17 | "Source": "https://github.com/Droidtown/ArticutAPI", 18 | }, 19 | license="MIT License", 20 | keywords=[ 21 | "NLP", "NLU", "CWS", "POS", "NER", "AI", 22 | "artificial intelligence", 23 | "Chinese word segmentation", 24 | "computational linguistics", 25 | "language", 26 | "linguistics", 27 | "graphQL", 28 | "natural language", 29 | "natural language processing", 30 | "natural language understanding", 31 | "parsing", 32 | "part-of-speech-embdding", 33 | "part-of-speech-tagger", 34 | "pos-tagger", 35 | "pos-tagging", 36 | "syntax", 37 | "tagging", 38 | "text analytics" 39 | ], 40 | packages=setuptools.find_packages(), 41 | include_package_data=True, 42 | install_requires=[ 43 | "requests >= 2.25.1", 44 | "emoji", 45 | #"graphene" 46 | ], 47 | classifiers=[ 48 | "Programming Language :: Python :: 3", 49 | "Programming Language :: Python :: 3 :: Only", 50 | "Programming Language :: Python :: 3.6", 51 | "Programming Language :: Python :: 3.7", 52 | "Programming Language :: Python :: 3.8", 53 | "Programming Language :: Python :: 3.9", 54 | "Programming Language :: Python :: 3.10", 55 | "Programming Language :: Python :: 3.11", 56 | "Programming Language :: Python :: 3.12", 57 | "Programming Language :: Python :: 3.13", 58 | "License :: OSI Approved :: MIT License", 59 | "Operating System :: OS Independent", 60 | "Development Status :: 5 - Production/Stable", 61 | #"Environment :: Console", 62 | "Intended Audience :: Developers", 63 | "Intended Audience :: Customer Service", 64 | "Intended Audience :: Information Technology", 65 | "Natural Language :: Chinese (Traditional)", 66 | "Topic :: Software Development :: Libraries :: Python Modules", 67 | "Topic :: Text Processing", 68 | "Topic :: Text Processing :: Linguistic", 69 | "Topic :: Text Processing :: Markup :: XML", 70 | "Topic :: Text Processing :: Filters", 71 | "Topic :: Utilities", 72 | ], 73 | python_requires=">=3.6.1", 74 | ) 75 | --------------------------------------------------------------------------------