SpaCy:为包含多个单词的地址(位置)添加tokenizer特例

时间:2017-02-19 18:19:56

标签: python spacy

我想在SpaCy的帮助下从用户提供的不同句子中提取位置(例如,当用户输入“纽约新奥尔良”时,我得到两个地点“纽约”和“新奥尔良”它)。由于SpaCy提供了将特殊情况添加到其标记器的非常方便的可能性,因此我尝试将它们用于不同的位置(如文档here中所述)。只要位置只包含一个单词,一切正常。但是,一旦这些地点由两个或更多的单词组成(如前面提到的“纽约”,“新奥尔良”等等),特殊情况就不再正确处理了。
我想这是因为特殊情况仅在文本被分割为标记后处理(文本在每个空白区域分割,如here所述)。这意味着SpaCy将文本分解为“纽约新奥尔良”标记为“新”,“约克”,“新”,“奥尔良”,后来无法匹配任何令牌的特殊情况。

所以,我的问题如下:有没有办法可以添加由两个单词组成的特殊情况,以便SpaCy正确地标记它们?为了保持这个例子,“纽约新奥尔良”被认为是“纽约”和“新奥尔良”这两个地方 - 因为我确实为每个地点添加了一个特殊情况。
或者还有另一种最佳实践(我可能已经错过了)来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

我使用spacy的实体识别?您可以在以后进行实体识别时过滤等于GPE的标签。

import spacy
nlp = spacy.load('en')
doc = nlp("New York New Orleans")

for ent in doc.ents:
    print((ent.label_, ent.text))

输出

('GPE', 'New York')
('GPE', 'New Orleans')