PHP文本扫描仪如何


PHP text scanner how?

我想为PHP中的类似单词制作一个文本扫描器,但我不知道从哪里开始。扫描仪必须扫描一个段落并指出数据库中的匹配项,或者提出有助于使该段落更好的特定单词。

起初我以为我可以使用数据库和搜索引擎脚本,但有人告诉我这不是这样做的方法。

有人可以指出我正确的方向,以便我开始工作吗?

在文本中搜索相似之处可能是一项非常艰苦的工作。如果您想搜索段落,然后检查数据库中是否有类似的文本,我建议使用"tfidf"算法。我在论文中使用它,它确实工作得很好。

但是,没有"主"算法可以完成您需要的一切。这是大量的研究,它总是取决于你将使用的文本的属性。一些关于NLP的知识也可以帮助解决这些问题。

为了只找到单词相似性,我会使用这样的东西。希望他的帮助。

我只是发布了另一个答案,因为我的第一个答案在 OP 评论之后是错误的,而且它有太多评论。

首先,您需要推断段落中的每个单词,例如:

$words_array = explode(" ", $paragraph);

然后你需要删除特殊字符,斜杠,点,逗号等(可能使用str_replace())。

在第二步中,您需要构建一个同义词数据库,如下所示:

| id | word | synonyms |
| 0  | car  | vehicle  |
| 1  | car  | transport |

然后做类似的事情(对于段落的每个单词):

SELECT synonyms FROM table WHERE word="car"

在此之后,您可以获取结果。

但这仅仅是个开始您需要优化此方法。示例:您可以在搜索车辆时执行此操作,它会返回汽车。运输也是如此。这取决于你!

你已经尝试过similar_text()吗?它非常易于使用,您可以轻松地将其适应使用数据库(其中数据库可以是文本文件,SQL数据库甚至数组)。

快速示例:

// you have to call this function multiple times for each word of the paragraph and for each word of your DB of suggestions
function suggest ($word_of_the_paragraph, $word_taken_from_a_DB) {
    similar_text($word_of_the_paragraph, $word_taken_from_a_DB, $percent);
    if ($percent >= $threshold) {
        echo $word_taken_from_a_DB; // this is the suggested word
    }
}