我一直在使用NLP的標記器,但是我不確定這個行爲,當涉及到地方時。如果我給紐約或墨西哥城,分詞器分別將其分成New和York。Tokenizing的地方像紐約
但是我希望它只是紐約。有沒有任何標記器來實現這一點,如果不是如何實現這個結果呢?
感謝
我一直在使用NLP的標記器,但是我不確定這個行爲,當涉及到地方時。如果我給紐約或墨西哥城,分詞器分別將其分成New和York。Tokenizing的地方像紐約
但是我希望它只是紐約。有沒有任何標記器來實現這一點,如果不是如何實現這個結果呢?
感謝
您的標記器行爲正常。 New
和York
是兩個不同的標記。你想要做的是chunking。 Here是一些關於chunking給你一些背景的信息。
根據您正在使用的NLP庫,可能有一些內置的功能用於分塊。對於您在問題標籤中包含的OpenNLP,請參閱以下相關問題:How to extract the noun phrases using Open nlp's chunking parser
匹配一個或兩個令牌,你需要一個遞歸集某種。
單個標記(華盛頓,邁阿密)。
潛在第一前綴令牌,那以後他們有東西:
新(紐黑文,紐約)
聖(Fransisco)。
基本上,您首先匹配單個標記,然後添加前綴標記並影響第二個標記的解析。
一種方式做到這一點是使用hm = HashMap<String, HashSet<String>>
像
hs = new HashSet()
hs.add("Haven");
hs.add("York");
hm = new HashMap();
HashMap.put("New", hs);
,當你在HM的的keySet獲得匹配,使用相應的值,以匹配下一個記號(但不要忘記它可能是一個假匹配!!)
嗨@claj,您可以請解釋一下,recursice集意味着什麼? – Yogi
如果您想自動發現「紐約」這樣的內容而不必維護字典(查找表),那麼也許您應該嘗試命名實體識別。 NER組件將根據模型使用模型來查找令牌中的位置(甚至是多字)。 – markg