【问题标题】:Is there a NLP package or function that knows or can find locations from a document?是否有 NLP 包或函数知道或可以从文档中找到位置?
【发布时间】:2019-12-14 03:12:57
【问题描述】:

我正在使用 Spacy 以及一些自定义代码来进行一些自然语言处理工作。我们想做一些事情,我们可以通过使用论文中的位置找到一篇论文的写作地点,并且很好奇是否有一个包可以找到国家、城市、州等位置?感谢您的宝贵时间。

【问题讨论】:

  • 我相信这是题外话。请参阅:help center
  • @AlexanderCécile 你说得对,我刚刚标记了它。

标签: python nlp spacy


【解决方案1】:

Spacy 已命名实体识别 (NER)。预训练模型具有的一种实体类型是 LOC 用于位置。在某些模型中还有GPE(地缘政治实体)。我在下面使用的en_core_web_sm 同时具有LOCGPE。 (完整列表在https://spacy.io/api/annotation#named-entities)。另见:https://spacy.io/usage/linguistic-features#named-entities

开箱即用并不完美,但它可能有用。

小例子:

import spacy          # install cmd: pip3 install spacy --user
import en_core_web_sm # install cmd: python3 -m spacy download en_core_web_sm --user

text='San Fransisco is in California and my friend Frank lives there, close to the bay. He purchased his first house last January.'
NLP = en_core_web_sm.load()
output = NLP(text)
for item in output.ents:
    print(item.label_, item)

有这个输出:

GPE San Fransisco
GPE California
PERSON Frank
DATE last January

【讨论】:

  • 如果我不必指定城市,这是否可行?还是我总是必须在运行之前专门选择我要查找的城市/州/国家/地区?
  • @greenbur 正确。您无需告诉它任何内容,因为它使用的是 spacy (en_core_web_sm) 提供的预训练模型。如果您发现 spacy 模型不能可靠地找到您希望它找到的位置,您可以训练自己的模型并使用您的模型。我不是数据科学家,但它的工作原理是查看句子结构、词性、标点符号、单词顺序等。我给了它一个非常简单的句子,但输入 text 可能是很多段落。在我的示例中,它很容易找到San FransiscoCalifornia 中的两个GPE
  • 太好了,感谢您的帮助!我将它用于整个 PDF,所以希望它也能运行。
  • @greenbur 只要您可以从 PDF 中获取文本,它就会起作用。我们正在使用它来抓取网站(以及用户上传的 PDF 等文档)以进行实体提取(但我们对 PERSON 和 ORG 实体感兴趣)。您可能需要进行一些预处理以去除换行符和其他控制字符。它不会是完美的(我们实际上改用斯坦福 NER 以获得更好的 NER 结果,但这是用 Java 而不是 Python 编写的)但看看它能做什么非常有趣。
  • 是的,我们已经有了一个完整的工作模型,幸运的是我希望能够使用它!感谢您的帮助。
猜你喜欢
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
相关资源
最近更新 更多