2

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

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

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

4

3 回答 3

2

在文本中搜索相似性可能是一项艰巨的工作。如果你想搜索段落然后检查数据库中是否有类似的文本,我建议使用“ tfidf ”算法。我在我的论文中使用了它,它确实工作得很好。

但是,没有“主”算法可以满足您的所有需求。这是大量的研究,它总是取决于您将使用的文本的属性。一些关于NLP的知识也可以帮助解决这些问题。

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

于 2012-06-28T15:12:55.017 回答
1

I just post another answer because my first one was wrong after the OP comment and it had too many comments.

First you need to extrapolate every single word from your paragraph, using for example:

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

Then you need to remove special characters, slashes, points, commas etc. (maybe using str_replace()).

In the second step you need to build a Database of synonyms like this:

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

Then do something like (for each word of your paragraph):

SELECT synonyms FROM table WHERE word="car"

And after this you can fetch the results.

But this is only the start. You NEED to optimize this method. Example: you can do that when you search vehicle it returns car. The same for transport. That's up to you!

于 2012-06-28T15:29:26.957 回答
0

您是否已经尝试过similar_text()?它非常易于使用,您可以轻松地将其调整为使用 DB(其中 DB 可能是文本文件、SQL DB 甚至是数组)。

快速示例:

// 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
    }
}
于 2012-06-28T14:54:38.620 回答