gpt4 book ai didi

text - 如何计算字母频率相似度?

转载 作者:行者123 更新时间:2023-12-04 06:04:59 27 4
gpt4 key购买 nike

鉴于此数据(两种语言的相对字母频率):

spanish => 'e' => 13.72, 'a' => 11.72, 'o' => 8.44, 's' => 7.20, 'n' => 6.83,
english => 'e' => 12.60, 't' => 9.37, 'a' => 8.34, 'o' => 7.70, 'n' => 6.80,

然后计算字符串“这是一个测试”的字母频率给我:
"t"=>21.43, "s"=>14.29, "i"=>7.14, "r"=>7.14, "y"=>7.14, "'"=>7.14, "h"=>7.14, "e"=>7.14, "l"=>7.14

那么,将给定的字符串字母频率与语言匹配(并尝试检测语言)的好方法是什么?我已经看到(并测试过)一些使用 levenshtein distance 的例子,在你添加更多语言之前它似乎工作正常。
"this is a test" gives (shortest distance:) [:english, 13] ...
"esto es una prueba" gives (shortest distance:) [:spanish, 13] ...

最佳答案

您是否考虑过使用 cosine similarity确定两个向量之间的相似度?
cosine similarity formula

第一个向量是从测试字符串中提取的字母频率(要分类),第二个向量是特定语言的。

您当前正在提取单个字母频率(unigrams)。我建议提取高阶 n-grams ,例如二元组或三元组(如果您有足够的训练数据,甚至更大)。例如,对于二元组,您将计算“aa”、“ab”、“ac”...“zz”的频率,与仅考虑单个字符频率相比,这将允许您提取更多信息。

不过要小心,因为当您使用更高阶的 n-gram 时,您需要更多的训练数据,否则您将有许多以前从未见过的字符组合的 0 值。

此外,第二种可能性是使用 tf-idf (term-frequency inverse-document-frequency) 权重而不是纯字母 (term) 频率。

研究

这是 language identification for (very) short texts 上的精彩幻灯片,它使用机器学习分类器(但也有一些其他的好信息)。

这是一篇短文A Comparison of Language Identification Approacheson Short, Query-Style Texts你可能也会觉得有用。

关于text - 如何计算字母频率相似度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15710292/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com