我有一个大型数据集,其中包含一些单词和短语,例如:
dataset = [
"car",
"red-car",
"lorry",
"broken lorry",
"truck owner",
"train",
...
]
我正在尝试找到一种方法来确定与短句中最相似的单词,例如:
input = "I love my car that is red" # should map to "red-car"
input = "I purchased a new lorry" # should map to "lorry"
input = "I hate my redcar" # should map to "red-car"
input = "I will use my truck" # should map to "truck owner"
input = "Look at that yellow lorri" # should map to "lorry"
我尝试了多种方法,包括:
使用TfidfVectorizer对数据集和输入进行向量化,然后计算从数据集中每个向量化的项值到输入向量化值的余弦相似度。
问题在于,这种方法只有当输入中包含数据集中的确切单词时才有效。例如,如果输入为“trai”,则余弦值为0,而我想将其映射到数据集中的值“train”。
最明显的解决方法是执行简单的拼写检查,但这可能不是一个有效的选项,因为即使单词略有不同,我仍然想选择最相似的结果,例如:
input = "broke" # should map to "broken lorry" given the above dataset
如果有人能提供其他我可以尝试的潜在方法,我将不胜感激。
nltk
包应该可以让你找到词干(例如,broken、broke、break都可以映射到一个单一的词干)。 - Tom Dalton