我试图在 R 中进行一些距离匹配,并且正在努力实现可用的输出。
我有一个terms
包含 5 个文本字符串的数据框,以及每个字符串的类别。我有第二个数据框notes
,其中包含 10 个拼写错误的单词以及一个 NoteID。
我希望能够使用距离算法将我的 5 个terms
和 10 个中的每一个进行比较,notes
以尝试抓住简单的拼写错误。我努力了:
near_match<- subset(notes, jarowinkler(notes$word, terms$word) >0.9)
NoteID Note
5 e5 thought
10 e5 tough
和
jarowinkler(notes$word, terms$word)
[1] 0.8000000 0.7777778 0.8266667 0.8833333 0.9714286 0.8000000 0.8000000 0.8266667 0.8833333 0.9500000
第一个实例几乎是我需要的,它只是缺少terms
导致匹配的单词。第二个返回 10 个分数,但我不确定算法是否依次检查 5 个terms
中的每一个和 10 个notes
中的每一个,并且只返回最接近的匹配项(最高分)。
jarowinkler()
如果我想要的可以使用或有更好的选择,我该如何更改上述内容以实现我想要的输出?
我对 R 比较陌生,所以感谢任何帮助我进一步理解算法如何生成分数以及实现我想要的输出的方法是什么。
下面的示例数据框
谢谢
> notes
NoteID word
1 a1 hit
2 b2 hot
3 c3 shirt
4 d4 than
5 e5 thought
6 a1 hat
7 b2 get
8 c3 shirt
9 d4 than
10 e5 tough
> terms
Category word
1 a hot
2 b got
3 a shot
4 d that
5 c though