3

我的问题是过滤掉表中所有的人名,即公司、学校、机构的名称将留在数据库中。

我尝试了一个简单的解决方案,其中给出了公司、学校等名称的列表。我在那里搜索了最常用的术语。(注意:我没有搜索名称中的常用字符串,因为那样会花费很多)。我为这些术语以及最常见的子字符串分配了权重。有了这个,如果字符串中有一个 corp, inc, school, univ,那么它很可能不是一个人的名字。

现在,我的问题是如何将其变成人工智能。此外,我必须使仅公司、仅学校等的分类变得更容易。

例如

XYZ Brewery Corporation -> company
Harvard University -> school
Department of Health -> government agency

我知道的唯一 AI 技术是 Naive-Bayes、K-Means、Hierarchical、FCM、ANN。这些技术通常会得到数值,所以,我不知道如何将其变成人工智能。我所知道的唯一能广泛处理字符串的 AI 技术是 Levenshtein、Stemming、Needleman-Wunch 和 Jaro-Winkler。

我的第一种方法不正确吗?怎样才能融入我所知道的技术?我必须学习一项新技术吗?因为我还是一名学生,所以我基本上是 AI 新手。但是,这不是作业,而是公司项目(实际上我是我们小组中唯一的计算机科学专业,所以对我来说很重)。顺便说一句,如果您对我使用的语言感到好奇,我正在使用 C#,因为我打算将它制作成一个独立的应用程序,并且用户正在使用 Windows。

4

4 回答 4

4

这个问题通常被称为命名实体识别(NER)。SharpNLP项目是 NLP 算法的 C# 库,包括 NER。它似乎完全没有记录,尽管它是 Apache 的 OpenNLP 的 C# 端口,它有关于名称查找的文档;SharpNLP 的界面大概是类似的。

于 2012-04-19T04:58:30.300 回答
3

不要只是跳入花哨的机器学习算法。你的常识和直觉可以让你走得很远。
您拥有大量实体列表的想法非常好,如果您能找到世界上所有高等教育机构的列表,那么对于学校来说可能效果很好。如果您可以将这样的列表汇总在一起,那么它不太可能包含世界上所大学,但对于所有实际目的来说可能已经足够了。
从您已经编译的列表中,您可以计算每个实体类的每个一元组(即单词)和二元组(即连续的单词对)出现的次数,并看到某些短语强烈倾向于特定类(例如'department of' 可能主要出现在政府机构中,'inc'、'ltd'、'& co.' 可能只出现在公司中,'university'、'school'、'college' 可能主要出现在学校中)。您可以将这些想法形式化为朴素贝叶斯模型,但如果有一个更简单的规则,只检查大型 if-then 语句中的某些短语,可能会让您完成 90% 的工作。

于 2012-04-19T05:13:00.743 回答
0

您可能想看看 Febrl 项目。

Febrl(可自由扩展的生物医学记录链接)对一个或多个不共享唯一记录密钥或标识符的文件或数据源进行数据标准化(分段和清理)和概率记录链接(“模糊”匹配)。

特别是查看文档档案中名为biomed2002hmm.pdf的文件。它讨论了使用词汇标记化和隐马尔可夫模型来识别名称和地址的模式。

提出的想法可以应用于您识别个人名称与企业名称的问题。该项目包括所描述技术的代码示例(虽然是 Python,而不是 C#)。

于 2012-04-19T04:50:16.747 回答
0

python 库probablepeople使用条件随机场模型来执行此操作。(我是这个项目的贡献者),

于 2017-06-12T01:10:57.610 回答