用PHP进行文本挖掘
data-mining
nlp
nltk
php
5
0

我正在为我正在上的大学班做一个项目。

我正在使用PHP构建一个简单的Web应用程序,该应用程序基于一组字典将推文分为“正”(或快乐)和“负”(或悲伤)。我现在正在考虑的算法是朴素贝叶斯分类器或决策树。

但是,我找不到任何可以帮助我进行认真的语言处理的PHP库。 Python具有NLTK( http://www.nltk.org )。有什么类似的PHP?

我打算将WEKA用作Web应用程序的后端(通过从PHP内部在命令行中调用Weka),但似乎效率不高。

您有什么想法要在这个项目中使用吗?还是我应该切换到Python?

谢谢

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

如果要使用朴素贝叶斯分类器,则实际上并不需要大量的NL处理。您只需要一种算法即可阻止推文中的单词,如果需要,请删除停用词。

阻止算法比比皆是,并且不难编写代码。删除停用词只是搜索哈希图或类似内容的问题。尽管这是一个非常好的工具,但我认为没有理由将您的开发平台转换为适合NLTK。

收藏
评论

您也可以使用uClassify API进行与朴素贝叶斯相似的操作。基本上,您可以像使用任何算法一样训练分类器(除非您通过Web界面或通过将xml文档发送到API来进行分类)。然后,每当您收到新的tweet(或一批tweet)时,就调用API对其进行分类。它速度很快,您不必担心对其进行调整。当然,这意味着您失去了通过自己控制分类器而获得的灵活性,但是如果这本身不是类项目的目标,那也意味着为您减少了工作量。

收藏
评论

前一段时间我做过一个非常类似的项目-仅对RSS新闻项进行分类,而不是对Twitter进行分类-前端也使用PHP,后端使用WEKA。我使用了相对简单易用的PHP / Java Bridge-在Java(WEKA)代码中添加了几行,它允许您的PHP调用其方法。这是他们网站上的PHP端代码示例:

<?php 
require_once("http://localhost:8087/JavaBridge/java/Java.inc");

$world = new java("HelloWorld");
echo $world->hello(array("from PHP"));
?>

然后(就像有人已经提到的那样),您只需要过滤掉停用词即可。为此保留一个txt文件对于添加新单词非常方便(当您开始过滤掉不相关的单词并解决拼写错误时,它们往往会堆积起来)。

朴素贝叶斯模型具有很强的独立特征假设,即它不考虑通常成对出现的单词(例如成语或短语),只是将每个单词视为一个独立的出现。但是,它可以胜过某些更复杂的方法(例如,词干,IIRC),并且对于大学课程而言,它应该是完美的,而不必使其变得不必要地复杂。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号