我有两个字符串,我正在检查它们中的特定常用词。我已经有了语义分数;在这种情况下无关紧要,因为这些词是技术缩写并且有特别强调。他们拥有的常用词集越多,得分越高,越接近。
有很多方法可以解决这个问题。到目前为止,我想到了两个。
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-Corasick或 Rabin-Karp会很方便。
关于java - 优化搜索两个字符串中的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898464/