识别文本字符串中人的名字和姓氏的最佳方法 - php

我正在尝试从文本文件中提取人们的姓名,我正在逐行阅读这些文件。通过文件的结构方式,名字和姓氏几乎都应始终在同一行上,并且应在文件的前几行之内。目前,我在约2300个名称的数组中搜索名字,然后假定以下单词为姓。我目前的方法存在的问题是它与名称不正确匹配,因此可能会错误地将文件中的其他单词标识为名称。例如,我的名字叫Daniel,但函数跳过了我的名字,并把Virginia(文件中的一个较晚单词)识别为我的名字。我做错什么了吗,还有更好的方法吗?我对PHP相当陌生,所以我很可能犯了一个愚蠢的错误。

说明:该文件是原始文本文件,其中包含通过OCR从简历图片中提取的数据。就我的项目而言,我假设总是有一个名字和姓氏(中间没有),并且两者都在同一行

$name = $this->search($line);
if (count($name) > 0 && empty($fname) && empty($lname)){
    $fname = $name[0];
    $lname = $name[1];
}

function search($str){ //$str is the current file line being read
        require "utils".DIRECTORY_SEPARATOR."dictionary-first-names.php";
        $arr = explode(" ", $str);

        for ($i = 0; $i < count($arr); $i++){
            if (in_array(mb_strtolower($arr[$i]), $dict)){
                return array($arr[$i], $arr[$i+1]); //shouldn't have array out of bounds as first & last name should be on the same line
            }
        }
    }

这是一个指向dictionary-first-names.php的pastebin链接,因为它很长:https://pastebin.com/cRFkR4fh

参考方案

您可以使用命名实体识别(NER)方法,spacy和NLP Core是用于此目的的两个最佳库。但是您应该在python中执行此操作。

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP-如何建议搜索字词,“你是说……?” - php

当使用不检索任何结果的术语搜索数据库时,我想允许“您是不是……”建议(例如Google)。例如,如果有人寻找“ jquyer””,它将输出“ did you mean jquery?”当然,建议结果必须与数据库内部的值匹配(我正在使用mysql)。您知道可以做到这一点的图书馆吗?我已经用谷歌搜索过,但是没有找到任何好的结果。或者,也许您有一个想法,该如何独自…