java - 优化搜索两个字符串中的关键字

标签 java regex algorithm semantics semantic-analysis

我有两个字符串,我正在检查它们中的特定常用词。我已经有了语义分数;在这种情况下无关紧要,因为这些词是技术缩写并且有特别强调。他们拥有的常用词集越多,得分越高,越接近。

有很多方法可以解决这个问题。到目前为止,我想到了两个。

1) 我用字符串的单词创建了两个 ArrayList。如果 ArrayList 中都存在,我必须搜索另一组词。如果他们这样做,我给他们+1分。

然后我可以有多个条件,比如

 if((firstString.contains(keyWord)) && (secondString.contains(keyWord)))
  then +1
 if((firstString.contains(anotherKeyWord)) && (secondString.contains(anotherKeyWord)))
  then +1

2> 取两个字符串并使用

进行正则表达式搜索
if firstString.("(.*)someExpression(.*)")) && secondString.("(.*)someExpression(.*)"))
then +1
if firstString.("(.*)someOtherExpression(.*)")) && secondString.("(.*)someOtherExpression(.*)"))
then +1

还有其他更好的方法吗?我现在更倾向于使用正则表达式。这样做看起来非常有效。

基本上,我正在做的是尝试通过使用“ACLS”、“ASHD”、“CXR”(常用医学术语)等缩写词对句子进行分组来对相似的句子进行聚类,因为我知道这些句子主要讨论的是这些问题。然后我得到语义分数来对那些包含这些词的句子进行分组。错误的方法:/?

谢谢你:)

最佳答案

如果只有几个单词需要检查,我会坚持使用 String.contains(),因为它可读且易于实现。

如果要检查的单词很多,字符串搜索算法如Aho-CorasickRabin-Karp会很方便。

关于java - 优化搜索两个字符串中的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898464/

相关文章:

python - 找到最大 k 个整数的时间复杂度是多少?

java - 该算法拼图代码(USACO)的良好解决方案?

java - Hadoop如何在 "real-time"针对非陈旧数据运行?

.net - 如何快速测试大量正则表达式并知道哪个匹配?

c++ - 优化例程代码示例

JavaScript 正则表达式 : accept only space and letters from all languages

python - 使用 "re.sub"在 python 中剥离代码

java - 具有值列表的映射的现有 Java 实现?

java - 当我输入错误的用户名或密码时,它只是说**请输入用户名和密码**

java - 如何使用 Java 在面板内手动添加带有文本字段的标签