我有一堆可变拼写的ngram,我想将每个ngram映射到已知期望输出列表中的最佳匹配词。你知道吗
例如,['mob'、'mob'、'mobi'、'MOBIL'、'Mobile]映射到所需的'Mobile'输出。你知道吗
['desk'、'desk+Tab'、'Tab+desk'、'Desktop'、'dsk']的每个输入都映射到所需的'Desktop'输出
我有大约30个这样的“输出”字,和一堆大约几百万个ngram(更少的是唯一的)。你知道吗
我目前的最佳想法是获取所有唯一的ngram,将其复制并粘贴到Excel中,然后手动构建一个映射表,耗时太长而且不可扩展。 第二个想法是模糊匹配,但不匹配。你知道吗
我在自然语言术语或库方面根本没有经验,所以我找不到一个答案,当唯一ngram的数量增加或“输出”单词发生变化时,如何更好、更快和更广泛地实现这一点。你知道吗
有什么建议吗?你知道吗
经典的方法是,为每个ngram建立一个“特征矩阵”。每个单词映射到一个输出,该输出是介于
0
和29
之间的分类值(每个类对应一个)例如,特征可以是fuzzy-wuzzy给出的余弦相似性,但通常需要更多。然后根据创建的特征训练分类模型。这个模型通常可以是任何东西,一个神经网络,一个增强的树,等等
因为你只有大约30个类,你可以确定一个距离度量,比如说在单个单词的情况下Levenshtein distance,然后给每个ngram分配它最近的类。你知道吗
这样就不需要存储大量的内存。你知道吗
(如果ngram是整个数组,则可以平均数组中每个元素之间的距离)。你知道吗
其思想是使用前缀树来构建映射的字典 从你的单字到它最大的独特超级字符串。一旦我们建立了这个,对于超弦与单词本身相同的单词,我们尝试对列表中最接近的单词进行模糊匹配,并返回其超弦。所以“dsk”会发现“des”或“desk”是最接近的,我们提取它的超弦。你知道吗
相关问题 更多 >
编程相关推荐