我需要某种 Java 解决方案来满足以下要求:
- 在文本中搜索某些术语(每个术语可以是 1-3 个单词)。例如:{“ Hello World ”,“你好”}。匹配需要精确。
- 术语组约有 500 种,每个术语组包含约 30 个术语。
- 每个文本最多可包含 4000 个单词。
性能是一个重要问题。
谢谢, 杆
最佳答案
我已经为定制的垃圾邮件过滤器做了类似的事情。
我发现既简单又快速的技术是:
- 首先将输入文件拆分为单词。
- 对每个单词调用
intern()
,以简化第 3 步中的比较。 - 创建一个
Term
类,封装最多包含三个字符串的数组。它的equals()
方法可以对字符串进行指针比较,而不是调用String.equals()
。为输入中的每组 2 或 3 个连续单词创建一个Term
实例。 - 使用
Multimap
(来自 Google Collections)将每个术语映射到它出现的文件集。
关于java - Java 中的文本分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1567598/