Perl 和 NLP,从传记中解析名称

标签 perl module nlp

总的来说,我对 NLP 还很陌生,但对 Perl 非常擅长,我想知道那里有哪些强大的 NLP 模块。基本上,我有一个包含一堆段落的文件,其中一些是人们的传记。因此,首先我需要查找一个人的姓名,这有助于以后的其余过程。

所以我大致从这样的事情开始:

foreach $PPid (0 .. $PPscalar) {
$paragraph = @PP[$PPid];
if ($paragraph =~ /^(\w+ \w\. \w+|\w+ \w+)( also|)( has served| served| worked| joined| currently serves| has| was| is|, )/){
    $possibleName = $1;
    $badName = 0;
    foreach $piece (@pieces){
    if ($possibleName =~ /$piece/){
        $badName = 1;
    }
    }
    if ($badName == 0){
    push @namePile, $possibleName;
    }
}

}

因为大多数名称都从段落的开头开始。然后我正在寻找表示 Action 或拥有的关键字,但现在,它会挑选出额外的垃圾,而不是名字。必须有一个模块来做到这一点,对吧?

最佳答案

从数据中提取名称很困难。有多种解决方案。对于命名实体提取,您有以下内容

  • The naive approach .我记得看到这个并且对输出不感兴趣。
  • The dictionary approach .我用过这个,但有很多误报,而且我不太喜欢它下面的代码。
  • An open source binary with a perl interface (不推荐,我是这个 cpan 库的作者 - 设置它也很繁琐)。
  • 最好的解决方案是使用 Net::Calais 的专有 Web 服务。 perl 包装器

  • Net::Calais 是迄今为止速度和准确性的最佳选择。如果您需要将底层实现开源,请使用斯坦福图书馆。

    关于Perl 和 NLP,从传记中解析名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3259035/

    相关文章:

    perl - 确保只有一个 Perl 程序实例正在运行的最佳方法是什么?

    list - 循环遍历 Perl 中的列表

    windows - 为 CPAN(和 CorporatePAN)打包 perl 脚本的推荐方法是什么?

    java - 使用 Stanford CoreNLP 的段落中断

    java - 在 Java 中使用 WEKA 分类器模型对实时文本进行分类

    java - 使用斯坦福 CoreNLP/NER 提取标题(书籍、文章等)?

    perl - 全局访问perl中的变量

    angular - Angular 中共享模块的理想大小

    java - 我应该如何构建一个必须使用 Spring 和 JPA 的模块化企业应用程序?

    Ruby 在扩展时调用模块方法