【发布时间】:2012-01-28 13:51:33
【问题描述】:
我正在研究我的最后一个项目。
我正在尝试创建 Twitter 消息的情绪分析。
我正在使用贝叶斯算法和词袋。
你有 PHP 中词袋算法的例子吗?
我什么都找不到,可能是肯定词和否定词列表之类的
【问题讨论】:
标签: php algorithm sentiment-analysis
我正在研究我的最后一个项目。
我正在尝试创建 Twitter 消息的情绪分析。
我正在使用贝叶斯算法和词袋。
你有 PHP 中词袋算法的例子吗?
我什么都找不到,可能是肯定词和否定词列表之类的
【问题讨论】:
标签: php algorithm sentiment-analysis
“词袋”不是算法。
这只是意味着您将文本视为一个无序的多重集(一个“袋子”)来进行分析;你确实没有像在 NLP 中那样注意词序。例如,带有字数的稀疏向量。
【讨论】:
我还没有在 PHP 中实现 Bag of Words,但我已经在 java 中实现了。实现它的一种简单方法是获取训练数据并对其进行标记(例如 Stanford Tokenizer)。一旦你标记了所有的训练数据,你就可以从中提取 1-grams。我使用这个http://homepages.inf.ed.ac.uk/lzhang10/ngram.html 来提取克数,然后从输出中删除单词数并只使用单词。这将成为您的词袋语料库,可在训练和分类期间使用。确保您在训练和测试或分类期间使用相同的标记器,并且在训练模型时也使用相同的语料库。
现在实现它非常简单,只需获取一串数据并使用用于创建词袋语料库的相同标记器对其进行标记。现在获取每个标记,然后查找该标记在您的语料库中是否可用以及在什么位置。例如,您有一个语料库,其单词如下:-
一个
名字
你好
世界
,
你有一个字符串“你好,我叫 Jas”。标记它会给出以下标记 {hello,,,my,name,is,Jas} 并且当您尝试将这些标记与语料库匹配时,您的结果将是:-
2:1 4:1 6:1
这意味着,出现在语料库中位置 2、4 和 6 中的单词 name、hello 和 comma 出现在传入的测试字符串中。
【讨论】: