gpt4 book ai didi

Java库解析文本并计算唯一单词的数量?

转载 作者:行者123 更新时间:2023-12-02 04:50:26 24 4
gpt4 key购买 nike

我想计算某些文本中使用了多少个独特的单词。棘手的部分是,我想将一个单词的不同形式视为一个单词。示例:

I work.
He works.
I am working.
I have worked.

本文中的独特单词就是这 5 个:[I、work、He、am、have],因为一个(相同)单词“work”有 4 种不同的形式。

我想我需要一些字典,或者一些图书馆,但经过一番谷歌搜索后没有找到任何东西。有人可以帮助我吗?谢谢!

PS:我知道有些词是完全一样的,但它们的意思是不同的。 (例如:当他离开家时,树叶会覆盖地面)。不管怎样,忽略这种情况 - 很难覆盖它们+它们很少见并且不会显着影响结果。

最佳答案

对于英语,您可以使用 lucene 发行版中的 PorterStemmer。这个想法是保留每个单词的词干,并将其存储到一个集合中。

import java.util.HashSet;
import java.util.Set;

import org.tartarus.snowball.ext.PorterStemmer;

public class Test {
public static void main(String[] args) {
Set<String> stems = new HashSet<>();

PorterStemmer stemmer = new PorterStemmer();
String strings[] = new String[] { "I work.", "He works.",
"I am working.", "I have worked." };
for (String s : strings) {
for (String word : s.split("[\\s\\.]+")) {
stemmer.setCurrent(word);
stemmer.stem();
stems.add(stemmer.getCurrent());
}
}
System.err.println(stems);
}
}

结果:

[work, have, am, I, He]

如果您决定使用 lucene,您也可以开始使用 lucene 更高级的分词器函数。在上面的示例中,我们只是按空格和点字符进行分割。

关于Java库解析文本并计算唯一单词的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com