我正在尝试用PHP编写自然语言解析器和搜索引擎。到目前为止,我所想到的所有方式都是实施,使用或不那么有效的麻烦。
我的一个想法包括一个可以在简化字符串上执行正则表达式的脚本,即。从字符串中删除各种单词,然后首先检查结果字符串以查找用户正在查找的内容 - 即“开放时间”,然后如果可能的话,他们正在搜索的地点 - 让我们说“Derngate”。其余的与此相似。
有人能指出我更有效的做事方式吗?如果我可以提供帮助,我不想每个页面加载25个不同的正则表达式 - 或者计算的数量。“
非常感谢!
编辑:我只是好奇,就是这样。我宁愿做自己的(看看它是如何工作的)而不是像Lucene那样跳进去。
答案 0 :(得分:2)
您应该查看mapReduce和parallelization:
http://code.google.com/edu/parallel/mapreduce-tutorial.html
多数民众赞成谷歌如何做到这一点我相信。当然,你没有十亿台计算机可以帮助你。
(我也会说在纯php中这样做会非常慢)
答案 1 :(得分:0)
你肯定要研究一下信息检索和自然语言处理。你甚至不会接近谷歌,Bing正常表达的性能/效果。
另外,如果你想在这方面做认真的工作,你应该采用更“高效”的语言(C#,Java,C / C ++ ......)。
答案 2 :(得分:0)
我认为在对现有技术进行回顾之后,我会将根/茎词提取视为一个开端。 (如果您的文档语料库是相对静态的,那么任务不会太重,因为这可以在文档捕获时完成。)
有一个PHP扩展,干。 http://pecl.php.net/package/stem
在PHP中实现了Porter Stemmer,这是上面的关键操作,作为一个函数实现。