2014-01-13 31 views
0

我一直在使用NLP的標記器,但是我不確定這個行爲,當涉及到地方時。如果我給紐約或墨西哥城,分詞器分別將其分成New和York。Tokenizing的地方像紐約

但是我希望它只是紐約。有沒有任何標記器來實現這一點,如果不是如何實現這個結果呢?

感謝

回答

0

您的標記器行爲正常。 NewYork是兩個不同的標記。你想要做的是chunkingHere是一些關於chunking給你一些背景的信息。

根據您正在使用的NLP庫,可能有一些內置的功能用於分塊。對於您在問題標籤中包含的OpenNLP,請參閱以下相關問題:How to extract the noun phrases using Open nlp's chunking parser

+0

如果您想自動發現「紐約」這樣的內容而不必維護字典(查找表),那麼也許您應該嘗試命名實體識別。 NER組件將根據模型使用模型來查找令牌中的位置(甚至是多字)。 – markg

0

匹配一個或兩個令牌,你需要一個遞歸集某種。

單個標記(華盛頓,邁阿密)。

潛在第一前綴令牌,那以後他們有東西:

(紐黑文,紐約)

(Fransisco)。

基本上,您首先匹配單個標記,然後添加前綴標記並影響第二個標記的解析。

一種方式做到這一點是使用hm = HashMap<String, HashSet<String>>

hs = new HashSet() 
hs.add("Haven"); 
hs.add("York"); 

hm = new HashMap(); 
HashMap.put("New", hs); 

,當你在HM的的keySet獲得匹配,使用相應的值,以匹配下一個記號(但不要忘記它可能是一個假匹配!!)

+0

嗨@claj,您可以請解釋一下,recursice集意味着什麼? – Yogi