使用 PHP 进行文本挖掘 [关闭]

Posted

技术标签:

【中文标题】使用 PHP 进行文本挖掘 [关闭]【英文标题】:Text mining with PHP [closed] 【发布时间】:2011-02-16 12:04:36 【问题描述】:

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

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

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

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

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

谢谢

【问题讨论】:

在您的帖子或您链接的帖子中没有任何迹象表明这是一个合适的解决方案。 朴素贝叶斯分类器如果您了解基本原理,自己编写并不是很难。你实际上可以用这种方式在 PHP 中做所有事情。 San Jacinto 已经涵盖了我所说的关于 NLP 部分的所有内容。我可以从几周前做的一个类似项目中告诉你的另一件事是,使用标准词袋方法的情绪分类并不是很有效。不过,我没有尝试像 n-gram 这样的东西......我确实觉得它们会表现得更好,但当然这会给你带来很多额外的维度...... 在 php/ir phpir.com/bayesian-opinion-mining 上查看有关贝叶斯观点挖掘的文章的链接,这是一个非常值得收藏的网站 PEAR 的 Text_LanguageDetect 可以从文本样本中识别 52 种人类语言并返回每种语言的置信度分数。这不是一个值得考虑的有趣选项吗? @nuqqsa 问题是关于情感分析,而不是语言识别,它要求的是 PHP,而不是 Python。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

前者是网页界面,不是库(如果也有库,请提供链接)。后者是一个库,但适用于 Java,而不是 PHP。【参考方案5】:

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

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于使用 PHP 进行文本挖掘 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

文本挖掘篇|利用SVM进行短文本分类

如何使用 R Tidytext 加载文本以进行文本挖掘?

R语言 数据挖掘-文本分析(1)

文本挖掘:中文分词

使用R将PDF文件转换为文本文件进行文本挖掘

使用 tm-package 进行文本挖掘 - 词干提取