【问题标题】:NLP for java, which toolkit should I use?NLP for java,我应该使用哪个工具包?
【发布时间】:2011-12-15 04:54:25
【问题描述】:

我正在做一个项目,该项目需要计算 txt 文件中每个单词的出现次数。 例如,我有一个这样的文本文件:

Silver Lake 在 IPO 候选人中寻找什么 3 家被收益压垮的公司:Apple、Cirrus Logic、IBM IBM 的 Palmisano:如何成为一家拥有 100 年历史的公司

如果文件中有上面显示的 3 个句子,我想计算每个单词的出现次数。在这里,Company 和 company 应该被认为是同一个单词“company”(小写),所以单词“company”的总出现次数是 2。

是否有任何 Java 的 NLP 工具包可以区分“家庭”和“家庭”这样的两个词实际上来自同一个词“家庭”?

我会统计每个单词的出现次数以进一步进行朴素贝叶斯训练,因此获得每个单词的准确出现次数非常重要。

【问题讨论】:

  • 一些有用的术语:一种告诉您家庭和家庭属于同一词素的工具称为词干。字数也称为一元词频率。将文档视为字数特征向量的模型称为 bag-of-words

标签: java text nlp text-mining


【解决方案1】:

Apache LuceneOpenNLP 提供了良好的词干提取算法实现。您可以查看并使用最适合您的版本。我一直在为我的项目使用 Lucene。

【讨论】:

  • 实际上我要做的是一种叫做词形还原的东西,它在我的项目中效果更好。不幸的是,我找不到任何有用的 Java 实现资源。我发现的唯一一个是 StanfordNLP java 库,但它似乎无法正常工作。无论如何,谢谢你的回复。
【解决方案2】:

你也可以查看 LingPipe:http://alias-i.com/lingpipe/

【讨论】:

    【解决方案3】:

    您也可以查看 GATE :http://gate.ac.uk/

    如果你想用词来训练一个词袋模型,你可以使用 TF-IDF 值而不是绝对计数。

    http://en.wikipedia.org/wiki/Tf%E2%80%93idf

    【讨论】:

    • 这让我想起了数据库中计算单词在数据库中的权重的模型。谢谢。
    【解决方案4】:

    您所做的称为词干提取(获取词根)。

    如前所述,Lingpipe、Gate 和 Lucene/Solr 进行词干提取。另一种选择是斯坦福解析器。或者您可以自己实现 Porter Stemming 算法。

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 2012-04-22
      • 1970-01-01
      • 2011-07-22
      • 2014-03-25
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 2011-06-25
      相关资源
      最近更新 更多