0

我们正在开发一个垂直搜索引擎作为我们的 BTech 项目。我们想使用词干分析器将网页上的单词转换为它们的词根。我们尝试使用 Porter Stemmer,但它没有给出预期的结果。

Porter Stemmer 错误地转换了例如

1. goes -> goe
2. ponies -> poni
3. happily -> happili

那么有人可以建议我们应该使用哪种算法吗?

4

2 回答 2

0

我过去做过这样的事情。Porter Stemmer 在允许单词比较方面做得很好,但它不能用于显示。我的基本算法是:

  1. 抓取页面并通过 Porter Stemmer 运行其内容以存储词根。
  2. 获取用户输入并通过 Porter Stemmer 运行它以获取用户输入的根。
  3. 将抓取的根词与用户输入的根词进行比较(在我的情况下,排除了停用词词典)
  4. 生成用于显示的结果页面并通过表示层运行它,该表示层将在用户查询中具有匹配根词的所有词加粗。

看起来您已经完成了大部分工作 - 只是演示部分需要一些额外的工作。

更新:为了澄清我在这里的意思,想象一下 Porter stemmer 没有产生可读的词干,而是产生了数字词干 ID(例如 Goes -> 3749)。该算法仍然有效,但您仍然必须将根词重新映射为完整词以进行演示。

于 2014-03-15T08:03:52.267 回答
0

您不需要 Stemmer,您需要Lemmatizer
Morpha是一个非常好的词形还原器。如果您更容易使用,Stanford CoreNLP 工具附带了一个 morpha 的 Java
端口

于 2014-03-15T19:38:34.620 回答