匹配相似的字符串与常见的重要单词

时间:2017-11-28 14:12:12

标签: python elasticsearch nlp fuzzywuzzy

我希望匹配具有相同重要字词的类似字符串。

问题:

我有两个文件,一个是主文件,一个是输入文件。我必须遍历输入文件并从master中找到类似的记录。目前我已经在ElasticSearch中索引了主文件并尝试从ElasticSearch获取类似的记录,但由于Master包含许多类似的记录,因此返回许多记录并从中找到适当的记录是问题。

示例输入记录:

1.  Included H1 [Correct One]
2.  H7 Bulbs Included
3.  H8 Bulbs Provided
4.  H1 not Included[Should not match this]

来自ElasticSearch的示例输出:

1.   H1/NNP Included/NNP
2.   H8/NNP Bulbs/NNP Provided/NNP

我尝试使用POS标记来获取重要的术语,但效果不佳。

POS Tagger输出:

1. H1 Bulbs included

如何处理?

修改

在上面的示例中, H1 是重要的术语

示例输入记录:

1.   H2 Bulbs Included
2.   H3 Bulbs Included
3.   H1 [Correct One]

ElasticSearch的示例输出:

1.H1 bulbs [H1]
2.9600 added [9600]
3.It has H8 [H8]
4.1/2 wire for 4500 bulb [4500]

最初我需要识别重要的单词。目前在重要词汇中没有模式。

即。)

@Configuration
@ApplicationPath("/api")
public class JerseyConfiguration extends ResourceConfig {
    public JerseyConfiguration() {  }

    @PostConstruct
    public void setUp() {
        register(AdminController.class);
        register(AdminResource.class);
        register(GenericExceptionMapper.class);
    }
}

1 个答案:

答案 0 :(得分:1)

我不熟悉elasticsearch,但这样做但使用标准python应该很简单。从您上面的标准来看,不清楚哪些是真正意义重大的词汇,并且' H1' '包括'和''灯泡'以及处理标准是什么,但作为一个简单的案例:

inputstr = 'H1 Bulbs Included'
keywords = ('H1','Bulbs','Included')
result = [x for x in keywords if x in inputstr]

>>> ['H1','Bulbs','Included']

或者,如果你想对它进行一些数学计算,你可以做

result = [bool(x) for x in keywords if x in inputstr]
>>> [True,True,True]

sum(result)
>>> 3

然后如果某些单词非常关键,你可以使用乘法来表示关键词,如果你需要3个中的2个你可以检查总和等

过滤掉'不是',你可以检查“不是”#39;不在inputstr,即

result = 'not' not in inputstr * result
>>> True