3

我需要使用 Perl 从文本块中提取名称(包括不常见的名称)。我研究了这个模块来提取名字,但它只有 1990 年以来美国最受欢迎的 1000 个名字和姓氏;我需要一些更全面的东西。

我曾考虑使用社会保障指数来建立一个数据库进行比较,但这似乎非常繁琐且处理密集。有没有办法使用另一种方法从 Perl 中提取名称?

要解析的文本示例:

LADNIER
Louis Anthony Ladnier,[Louie] 48 岁,来自阿拉巴马州莫比尔,于 2012 年 11 月 16 日星期五在家中去世。
路易 1964 年 1 月 9 日出生于阿拉巴马州莫比尔。他是 John E. Ladnier, Sr. 和 Gloria Bosarge Ladnier 的儿子。他毕业于 McGill-Toolen 高中,并就读于南阿拉巴马大学。他一直受雇于 Bayou La Batre 警察局担任通讯主管,直至医疗退休。
他的父亲约翰先于他去世。他的母亲格洛丽亚、侄子多米尼克拉德尼尔和克里斯蒂安卢比奥幸存下来,他深爱并帮助抚养他们成为自己的儿子、姐妹 Marj Ladnier 和 Morgan Gordy [Julian],以及兄弟 Eddie Ladnier [Cindy],以及侄子 Jamie,乔伊、埃迪、威尔、本和侄女、安娜和伊丽莎白。
追悼会将于周三下午 1 点在莫比尔的圣多米尼克天主教堂举行。
宁静殡仪馆负责安排。
代替鲜花,可将纪念物寄至 St. Dominic Sc​​hool, 4160 Burma Road Mobile, AL 36693, education fund for Christian Rubio and McGill-Toolen High School, 1501 Old Shell Road Mobile, AL 36604, education Fund for Dominic Ladnier。
家人感谢这段时间的所有祈祷和支持。路易对我们所有人来说都是一块石头和快乐。

4

5 回答 5

2

Use Stanford's NER (GPL). Demo:

http://nlp.stanford.edu:8080/ner/process

于 2014-01-02T22:12:21.653 回答
1

由于英语的性质,没有确定的方法可以做到这一点。您要么需要列表来(模糊)比较,要么必须接受重大的准确性惩罚。

于 2012-11-30T18:38:14.777 回答
1

Apache 基金会有几个项目涵盖了实体提取主题,这些项目使用特定的预训练英文名称模型 (nameFinder)。我会推荐 openLNP 或 Stanbol。同时,如果您只有几个查询,我在http://www.augmentedintel.com/apps/csharpnlp/extract-names-from-text.aspx的应用程序部分中使用 C# 实现了 NLP 。

最好的,

大学教师

于 2013-04-26T13:52:09.700 回答
0

您正在尝试实现命名实体识别。坏消息是这真的很难。您可以尝试Lingua::EN::NamedEntity,但是:

$ perl -MLingua::EN::NamedEntity -nE 'say $_ for map { $_->{class} eq "person" ? $_->{entity} : () } extract_entities($_)' names.txt 
Louie
Louis Anthony Ladnier
Louie
John E
Bayou La Batre Police Department
Gloria
Julian
Cindy
Eddie Ladnier
Eddie
John
Catholic Church
Christian Rubio
Dominic Ladnier
Burma Road Mobile
Louie

您还可以使用Calais,这是一个用于自然语言处理的路透社网络服务,它提供了更好的结果:

calais

于 2012-11-30T19:56:22.250 回答
0

我想你想谷歌这样的东西:

perl part of speech tagging
于 2012-11-30T21:20:10.723 回答