我想在PHP中为类似的单词制作文本扫描程序,但我不知道从哪里开始。扫描仪必须扫描段落并指出数据库中找到的匹配项或提出有助于使该段更好的特定单词。
我起初认为我可以使用数据库和搜索引擎脚本,但我被告知这不是这样做的方法。
有人可以指出我正确的方向,以便开始研究吗?
答案 0 :(得分:2)
在文本中搜索相似性可能是非常艰苦的工作。 如果你想搜索段落,然后检查数据库中是否有类似的文本,我建议使用“tfidf”算法。我在论文中使用它并且它确实运行良好。
然而,没有“主”算法可以满足您的所有需求。这是一项很多研究,它总是取决于你将使用的文本的属性。 关于NLP的一些知识也可以帮助解决这些问题。
为了找到类似的单词,我会使用this之类的东西。 希望他的帮助。
答案 1 :(得分:1)
我刚发布另一个答案,因为我的第一个答案是在OP评论之后错了,而且评论太多了。
首先,您需要使用例如:
来推断段落中的每个单词$words_array = explode(" ", $paragraph);
然后你需要删除特殊字符,斜杠,点,逗号等(可能使用str_replace())。
在第二步中,您需要构建一个像这样的同义词数据库:
| id | word | synonyms |
| 0 | car | vehicle |
| 1 | car | transport |
然后执行类似(对于段落中的每个单词):
SELECT synonyms FROM table WHERE word="car"
然后你可以获取结果。
但这只是一个开始。您需要来优化此方法。示例:当您搜索车辆时,您可以执行此操作返回汽车。运输相同。这取决于你!
答案 2 :(得分: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
}
}