如何用Python获取两种语言的亲近度(相似度)
嘿,这个问题挺实用的!我之前也琢磨过怎么用Python计算整体语言的相似度,给你几个靠谱的方案,不用依赖那个没法调用的网站,也不用Selenium:
用专业语言学库LingPy
LingPy是专门做计算语言学的工具,内置了很多语言亲缘关系相关的数据集和算法,比如Swadesh核心词汇表(用来衡量词汇相似度的经典工具)。你可以用它来计算两种语言的词汇重叠度或者同源词比例,这和你提到的网站计算逻辑挺接近的。
先安装:pip install lingpy举个简单的例子,你可以调用它的同源词检测功能,针对英语和法语的核心词汇做比对,得到的比例可以作为相似度的参考值(虽然数值可能和46.9不完全一致,但逻辑是相通的)。
基于预训练多语言模型计算语义相似度
如果你想要更偏向语义层面的相似度,可以用多语言预训练模型(比如sentence-transformers里的paraphrase-multilingual-MiniLM-L12-v2)。具体思路是:- 收集两种语言的代表性文本(比如维基百科对应语言的词条摘要、经典文学片段);
- 用模型把这些文本转换成向量嵌入;
- 计算两种语言向量集合的平均余弦相似度,这个值就能反映整体语言的语义相近程度。
安装依赖:
pip install sentence-transformers这个方法的好处是不需要语言学专业知识,上手快,而且结果也有不错的参考性。
自定义语言特征计算
如果你想更贴近那个网站的计算逻辑,可以自己构建特征:比如统计两种语言的音系特征(比如元音辅音的分布)、常用词汇的重叠率、语法结构的相似点等。比如你可以爬取两种语言的高频词表,计算交集比例,或者用NLTK分析语法树的相似性。不过这个方法需要你对语言学有一定了解,适合需要定制化需求的场景。
另外要提一句,不同工具的计算逻辑不一样,所以得到的数值可能和你说的46.9有差异,但只要选对了符合需求的方法,结果会有很高的参考价值哦。
备注:内容来源于stack exchange,提问作者Pixel_Bear

