【问题标题】:How can personal and place names be extracted from text using C#?如何使用 C# 从文本中提取人名和地名?
【发布时间】:2015-04-26 17:26:32
【问题描述】:

是否有任何 C# 算法可以从文本中提取人名和地名?

例如,给定以下文本:

St. Mark died at Alexandria, in Egypt.  He was martyred, I think.
However, that has nothing to do with my legend.  About the founding of
the city of Venice--

(摘自马克吐温的“海外无辜者”)

...有什么方法可以提取:

St. Mark
Alexandria (or better yet, "Alexandria, Egypt")
Venice

?

我意识到没有办法获得 100% 的准确度(所有地名和个人姓名都被捕获,并且没有添加“误报”),但 80% 的准确度可能非常有价值。

我知道每个单词都可以与百科全书或类似的东西进行比较,但必须有更好的方法。此外,算法怎么会知道结合“圣”。和“马克”,然后将“埃及的亚历山大”视为“埃及的亚历山大”?

【问题讨论】:

  • “但一定有更好的方法”——你为什么这么有信心?你如何识别你脑海中的名字?因为您知道这些词对应于名称,甚至是位置。您将这些词与一个人或一个位置相关联;这正是计算机程序也需要做的。它建立这些关联的唯一方法是告诉它它们,例如使用名称或位置的索引。 “算法怎么会知道‘St.’和‘Mark’的结合”——是的,它怎么知道?你必须告诉它这样做。
  • 首先,这不是“c#”特定的问题。其次,通过在谷歌中输入短语“从文本算法中提取个人和地名”,您可以找到许多关于您想要做什么的研究论文。在不进行全面 NLP 的情况下,您可以做的最好的事情是过滤掉明显不匹配的单词,然后尝试用类似这样的方式对其余单词进行分类:nlp.stanford.edu/software/CRF-NER.shtml
  • 我们开始编码,这可能会有所帮助... 249 个国家/地区的 97.114 个地点:unece.org/cefact/codesfortrade/codes_index.html
  • 这称为“命名实体识别”。这可能有用:sergey-tihon.github.io/Stanford.NLP.NET/StanfordNER.html

标签: c# parsing text


【解决方案1】:

我注意到这里提供的链接有点过时了。斯坦福自然语言处理 (NLP) 库 (https://nlp.stanford.edu/software/) 是一个仍然活跃的项目(并且免费 [更正:GPL,因此对非商业免费])。您可以演示他们的命名实体识别 (NER) here。它甚至还有一个 .NET 包装器 (http://sergey-tihon.github.io/Stanford.NLP.NET/StanfordNER.html)。

Microsoft 还通过 Azure 认知服务提供许多类似的算法。您对实体链接最感兴趣 (https://azure.microsoft.com/en-us/services/cognitive-services/entity-linking-intelligence-service/)

我希望对未来的观众有所帮助。

【讨论】:

    【解决方案2】:

    您最好使用能够执行这种实体匹配的某种 API,因为您所要求的可能非常复杂,并且需要由大型数据库支持的某种程度的语义文本分析。我建议查看 API,例如:

    OpenCalais - English Semantic Metadata: Entity/Fact/Event Definitions and Descriptions web-service

    Calais 支持一组丰富的语义元数据,包括实体、事件和事实。

    Alchemy API - Entity Extraction API

    AlchemyAPI 能够识别您的 HTML、文本或基于 Web 的内容中的人员、公司、组织、城市、地理特征和其他类型的实体。我们采用复杂的统计算法和自然语言处理技术来分析您的信息,提取其中嵌入的丰富语义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 2014-10-30
      相关资源
      最近更新 更多