我有一个包含人工输入的观察数据的表格。有一列应该对应于另一个列表;人类输入的值应该与某种可能性的主列表中的值完全匹配。
然而,问题是人类数据被缩写、拼写错误等。是否有一种机制可以进行某种相似性搜索以找到人类输入的数据实际上应该是什么?
例子
**Human Entered** **Should Be**
Carbon-12 Carbon(12)
South Korea Republic of Korea
farenheit Fahrenheit
我真正唯一的想法是将人工输入的数据分成大约 3 个字符的部分,然后查看它们是否包含在应该列表中。它只会选择评分最高的条目。作为后来的补充,它可以向用户提供前 10 名或其他内容的选择。
我也不一定对绝对完美的解决方案感兴趣,但如果它能达到 70% 的正确率,它将节省大量浏览列表的时间。
最佳答案
一个选择是寻找一个小的 Levenshtein distance两个字符串之间,而不是要求完全匹配。这将有助于找到存在细微拼写差异或拼写错误的匹配项。
另一种选择是在比较字符串之前对其进行规范化。有意义的规范化技术取决于您的具体应用,但它可能包括:
- 删除所有标点符号。
- 将英式拼写转换为美式拼写。
- 使用物质的科学名称而不是其通用名称。
- 等等
然后您可以比较每个列表成员的规范化形式,而不是原始形式。您可能还想考虑使用不区分大小写的比较而不是区分大小写的比较。
关于c# - 匹配两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4528622/