加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

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

发布时间:2020-12-31 05:19:04 所属栏目:资源 来源:网络整理
导读:鉴于此数据(两种语言的相对字母频率): 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

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

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距离的一些例子,它似乎工作正常,直到你添加更多的语言.

"this is a test" gives (shortest distance:) [:english,13] ...
"esto es una prueba" gives (shortest distance:) [:spanish,13] ...

解决方法

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

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

您目前正在提取单个字母频率(unigrams).我建议提取更高阶的n-grams,如bigrams或trigrams(如果你有足够的训练数据,甚至更大).例如,对于双字母组合,您可以计算“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 Approaches on Short,Query-Style Texts,您可能也会发现它很有用.

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读