23

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

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

但是,我找不到任何 PHP 库可以帮助我进行一些严肃的语言处理。Python 有 NLTK ( http://www.nltk.org )。PHP有类似的东西吗?

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

你知道我应该为这个项目使用什么吗?还是我应该切换到 Python?

谢谢

4

6 回答 6

9

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

词干算法比比皆是,而且不难编码。删除停用词只是搜索哈希图或类似的东西。我不认为有理由切换您的开发平台以适应 NLTK,尽管它是一个非常好的工具。

于 2010-05-06T17:30:57.303 回答
5

前段时间我做了一个非常相似的项目——只对 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),并且对于大学课程来说应该是完美的,而不会使它变得不必要的复杂。

于 2012-01-26T20:04:01.557 回答
2

您还可以使用uClassify API 来执行类似于 Naive Bayes 的操作。您基本上可以像使用任何算法一样训练分类器(除了这里您是通过 Web 界面或通过将 xml 文档发送到 API 来进行的)。然后,每当您收到一条新推文(或一批推文)时,您都会调用 API 对其进行分类。它速度很快,您不必担心调整它。当然,这意味着您失去了通过自己控制分类器获得的灵活性,但这也意味着您的工作量会减少,如果这本身不是课程项目的目标的话。

于 2010-05-07T12:06:01.147 回答
1

尝试打开加莱 - http://viewer.opencalais.com/。它有 api、PHP 类等等。此外,此任务的 LingPipe - http://alias-i.com/lingpipe/index.html

于 2012-01-26T07:46:22.110 回答
1

您可以非常直接地检查此库https://github.com/Dachande663/PHP-Classifier

于 2013-03-11T22:03:00.417 回答
0

你也可以使用 thrift 或 gearman 来处理 nltk

于 2011-07-21T07:54:38.320 回答