中文soundex项目dimsim的python实现

dimsim的Python项目详细描述


dimsim-中文soundex库(python版本)

dimsim是ibm almaden研究中心的可扩展知识智能团队作为SystemT项目的一部分开发的一个库。

可以找到pypi项目页here。它是与ibmcenterforopensourcedata和ai技术(CODAIT)合作创建的。

概述

我们提供了一种用声音对汉字进行标引的语音算法。技术细节见以下paper

李敏,玛丽娜·丹尼尔夫斯基,莎拉·诺曼和李云耀。dimsim:一种基于学习高维编码的精确汉语语音相似度算法。康尔2018。

在这个库中,我们提供了一个预先训练的模型,它可以执行以下功能:

  • 给定两个相同长度的汉语短语,返回输入短语的语音距离。你也可以选择输入汉语短语的拼音字符串。
  • 给定一个汉语短语,返回其top-k相似(相像)的汉语短语。

如何安装

依赖项

  • pypinyin:用于将汉字翻译成相应的拼音。

安装此库有两种方法:

  • 从pypi安装
pip install dimsim
  • 通过克隆此repo下载源代码并自行编译。
git clone git@github.com:System-T/DimSim.git

cd DimSim/

pip install -e .

如何使用

一旦你安装了这个软件包,你就可以使用它来完成如下所示的两个功能。

  • 计算两个汉语短语的音程。可选参数pinyin(默认为false)可用于直接提供拼音字符串列表。参见下面的示例用法。
importdimsimdist=dimsim.get_distance("大侠","大虾")0.0002380952380952381dist=dimsim.get_distance("大侠","大人")25.001417183349876dist=dimsim.get_distance(['da4','xia2'],['da4','xia1']],pinyin=True)0.0002380952380952381dist=dimsim.get_distance(['da4','xia2'],['da4','ren2']],pinyin=True)25.001417183349876

  • 返回给定汉语短语的top-k语音相似短语。两个参数:
  • mode控制返回的中文短语的字符类型,其中“simplified”表示简体中文,“traditional”表示繁体中文。
  • theta控制候选短语的搜索空间大小。
importdimsimcandidates=dimsim.get_candidates("大侠",mode="simplified",theta=1)['打下','大虾','大侠']candidates=dimsim.get_candidates("粉丝",mode="traditinoal",theta=1)['門市','分時','焚屍','粉飾','粉絲']

引文

请参考已发表的论文引用图书馆:

@InProceedings{K18-1043,
  author = 	{Li, Min and Danilevsky, Marina and Noeman, Sara and Li, Yunyao},
  title = 	{{DIMSIM:} An Accurate Chinese Phonetic Similarity Algorithm Based on Learned High Dimensional Encoding},
  booktitle = 	{Proceedings of the 22nd Conference on Computational Natural Language Learning},
  year = 	{2018},
  publisher = 	{Association for Computational Linguistics},
  pages = 	{444-453},
  location = 	{Brussels, Belgium},
  url = 	{http://aclweb.org/anthology/K18-1043}
}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
有没有一种方法可以将不同的java web应用程序组合到一个web应用程序(war)中而不相互影响?   java一次屏蔽两位   java如何在多个类上初始化元素?   java在后台服务中处理通知或使用GCM(或其他推送通知服务)   java从const方法调用JNI函数   javascript如何使用函数/方法返回?   Java优化:声明类变量与使用临时变量   java字符算术基数8 vs基数10   Java流收集要存储的对象列表   swing我正在用Java中的keyListener制作一个精灵移动器   在Gradle构建脚本中使用Scala(或java)方法   java Android Mediaplayer下一步按钮不起作用   Java Sound API在播放音频文件后将其锁定   java将变量从外部类传递到内部类的最佳方法   使用play framework的博客web应用程序出现java逻辑错误   java我们可以在Spring批处理中处理大型zip文件吗?   java如何检查JTable的选定行的特定列中的值是否已经在JList中?