我正在尝试对用户输入的自由文本进行拼写校正。看起来像symspellpy将“儿科”改为“媒体学费”而不是儿科医生,将“新闻长者”改为“新闻演员”而不是“新闻主播”?有什么办法可以使自己的儿科医生自动将正确的儿科技巧拼写成儿科医师,而不是“媒体学费”?以下是基于我在网上找到的一些示例的代码:
max_edit_distance_dictionary = 2
prefix_length = 7
max_edit_distance_lookup = 2
sym_spell = SymSpell(max_edit_distance_dictionary, prefix_length)
dictionary_path = pkg_resources.resource_filename("symspellpy", "frequency_dictionary_en_82_765.txt")
bigram_path = pkg_resources.resource_filename("symspellpy", "frequency_bigramdictionary_en_243_342.txt")
if not sym_spell.load_dictionary(dictionary_path, term_index=0,count_index=1):
print("Dictionary file not found")
if not sym_spell.load_bigram_dictionary(bigram_path, term_index=0,count_index=2):
print("Bigram dictionary file not found")
input_term = 'pediatrition'
suggestions = sym_spell.lookup_compound(input_term, max_edit_distance=2,
transfer_casing=True)
for suggestion in suggestions:
print(suggestion)
答案 0 :(得分:0)
儿科
媒体学费:编辑距离= 3
儿科医生:编辑距离= 2
问题在于所使用的示例字典中根本没有包含“儿科医生”一词,因此SymSpell不了解建议。可以通过使用more complete dictionary来解决此问题,也可以使用文本编辑器将其添加到字典中,或者使用CreateDictionaryEntry()以编程方式添加该词。
新闻报道
新闻演员:编辑距离= 1
新闻主播:编辑距离= 2
这里的问题是建议“新闻演员”的编辑距离比“新闻主播”的编辑距离小。 SymSpell始终选择编辑距离最短的建议,并且如果存在多个相同编辑距离的建议,则仅,它使用朴素贝叶斯概率来确定最可能的建议