我想匹配SeqString
中的实体出现。例如:
dict_data = ['johnson', 'apple platform']
SeqString = 'Johnson buys a new phone which is based on Apppple Platform. Johnson very likes the Apple Platform.'
预期结果:
比赛1:约翰逊<=>约翰逊,start_char:0,end_char:7,相似度得分
第2场:Apppple平台<=>苹果平台,开始字符:43,结束字符:59,相似度得分
比赛3:约翰逊<=>约翰逊,开始字符:61,结束字符:68,相似度得分
匹配4:Apple平台<=> apple平台,开始字符:84,结束字符:98,相似度得分
简而言之,dict_data
非常大。我想将dict_data
中的实体与阈值进行匹配。
我尝试过:
spaCy库。但是,它基于完全匹配。它无法处理Apppple Platform
。
fuzzywuzzy库,它具有方法SequenceMatcher.get_matching_blocks()
,但是,“三元组在i和j中单调递增”。这意味着它不能匹配johnson
的第二次出现。
我的案子有解决办法吗?
答案 0 :(得分:0)
根据可用的数据量,您可能会考虑使用精确匹配来生成训练数据,以使用(https://spacy.io/usage/training#section-ner)来训练NER中的自定义实体。 NER应该能够进行模糊匹配(以及更多)。但是,您应该尝试确保将仅与模糊匹配的文本保留在训练数据之外(否则,您将在训练NER时也不会检测到Apppple Platform)。