一.项目简介

1.1LangID & langid

项目地址:https://github.com/saffsd/langid.py

Langid是一个现成的语言识别工具。语言识别(LangID)可用于USENET信息,网络搜索词,多语言文本检索,语法分析等领域。从1990年起,LangID就被视为有监督的机器学习任务,并极大地受到文本分类(text categorization)研究的影响[3]。这里我们研究的是单语言(Monolingual)文本的语言识别问题。

langid.py是一个全监督分类器,主要基于多项式(multinomial event model)的朴素贝叶斯分类器。[1][2] 它用共包括97种语言的多场景(domain)的语料对模型进行了训练,场景包括5类:政府文件,软件文档,新闻电讯,在线百科和网络爬虫。

1.2 langid工具优点

1.      与传统文本识别工具不同,可现成使用(off-the-shelf)

2.      模型适用于不同的文本场景(domain),不受场景特征(domain-specific features)的影响

3.      代码轻便易部署,且只用到单个文件

4.      执行速度快

5.      可以作为网络服务(network/internet service)

6.      langid.py与WSGI兼容,可以部署在支持WSGI的网络服务器上,实现并行运算

1.3 langid模型的系统结构

二.文档分类模型

2.1 多项式朴素贝叶斯分类器[3]

注意,这里写的不对,P(Ci)不是根据最大似然得到,是直接根据样本中每种类别的个数占比就可以。另外,term只是特征,即特征独立同分布,P(D|Ci)才可以用连乘方式计算,也就是朴素的含义。 所谓的多项式,主要是指这里假设一篇文章是由服从多项式分布的单词生成的。P(D|Ci)的计算,与实际多项式分布有点差异,前面少了个|di}!,是因为这里由argmax操作。

三.文本特征项的确定

本节我们讨论二中的分类模型特征(项)的确定。由于我们将对任意场景的网络文档进行语言识别,因此需要一种对场景不敏感的文本表示(document representation)方法[5]。byte n-grams可以直接提取特征不需做编码检测,这里我们采用byte n-grams而不是 codepoint n-grams(具体查看[5])(这里byte n-grams 指字符级N-gram,之所以在这里这么选,是因为这里的语言识别,不受场景影响,不受原始语言编码影响,采用codepoint n-grams的话,需要切词,由此导致a.过度分割特征空间,b.编码之间的虚假匹配)。

3.1 byte n-grams[4]

原文献中n-grams的应用是文本分类(textcategory),这里我们可以认为类别是语种,本质上也是分类问题。


3.1.3 如何建立N-gram频率表

算法流程见下,就不在此累述了。

至此,我们就可以将得到的N-gram频率表作为二.中模型的输入。

3.2 特征选取

如果希望降低上述N-gram频率表的词表大小,我们可以选择具有较高平均互信息的特征N-gram项;且这些项对于同一语言,在不同场景下的分布应该相似,即对场景不敏感,即 (language-domain) score较低。具体的特征选取见[3]和[2]中的FeatureSelection部分。

四.结论

对于语言检测,测试文档越长准确率越高,但通过对micor-blog & twitter等进行实验,langid.py具有较高的准确率和识别速度,因此适用于长/短文档,所以可以考虑将其作为我们search query的语言识别工具。

五.参考文献

[1]Marco Lui 安定Timothy Baldwin, langid.py: An Off-the-shelf Language Identification Tool.

[2] Andrew McCallum, Kamal Nigam, A Comparison of Event Models for Naive Bayes Text Classification

[3] Marco Lui and Timothy Baldwin, Cross-domainFeature Selection for Language Identification

[4] William B. Cavnar and John M. Trenkle, N-Gram-BasedText Categorization

[5] Timothy Baldwin and Marco Lui, Language Identification: The Long and the Short of the Matter

补充:http://www.meilongkui.com/archives/431

系统学习NLP(二十五)--语种识别landID相关推荐

  1. 系统学习NLP(十五)--seq2seq

    转自:https://blog.csdn.net/aliceyangxi1987/article/details/73420477 本文结构: 什么是 seq2seq? Encoder–Decoder ...

  2. 无人驾驶汽车系统入门(二十五)——基于欧几里德聚类的激光雷达点云分割及ROS实现

    无人驾驶汽车系统入门(二十五)--基于欧几里德聚类的激光雷达点云分割及ROS实现 上一篇文章中我们介绍了一种基于射线坡度阈值的地面分割方法,并且我们使用pcl_ros实现了一个简单的节点,在完成了点云 ...

  3. JavaScript学习(二十五)—实现无缝滚动

    JavaScript学习(二十五)-实现无缝滚动 效果如下: 代码如下: <!DOCTYPE html> <html lang="en"><head& ...

  4. JVM 学习笔记二十五、JVM监控及诊断工具-命令行篇

    二十五.JVM监控及诊断工具-命令行篇 1.概述 性能诊断是软件工程师在日常工作中经常面对和解决的问题,在用户体验至上的今天,解决好应用软件的性能问题能带来非常大的收益. Java作为最流行的编程语言 ...

  5. 系统学习NLP(十二)--文本表示综述

    文本表示,简单的说就是不将文本视为字符串,而视为在数学上处理起来更为方便的向量(也就是文本特征抽取).而怎么把字符串变为向量,就是文本表示的核心问题. 文本表示,基于类型分为: 长文本表示 短文本表示 ...

  6. 嵌入式Linux系统编程学习之二十五信号量

    文章目录 前言 一.System V IPC 机制:信号量 1. semget 函数 2. semop 函数 3. semctl 函数 二.Posix 有名信号量 前言   信号量与信号量集的概念如下 ...

  7. 系统学习深度学习(二十五)--CNN调优总结

    资料来自网上,略有删改. 1.针对CNN优化的总结:Systematic evaluation of CNN advances on the ImageNet 使用没有 batchnorm 的 ELU ...

  8. 系统学习NLP(十八)--文本分类概述

    转自:https://blog.csdn.net/u014248127/article/details/80774668 文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多 ...

  9. 深度学习(二十五)——Attention(2)

    Attention(续) Multi-Head Attention 这个是Google提出的新概念,是Attention机制的完善.不过从形式上看,它其实就再简单不过了,就是把Q,K,V通过参数矩阵映 ...

  10. 系统学习NLP(十九)--文本分类之FastText

    转自:https://blog.csdn.net/sinat_26917383/article/details/54850933 FastText是Facebook开发的一款快速文本分类器,提供简单而 ...

最新文章

  1. 7 个 jQuery 最佳实践
  2. tensorflow tf.keras.utils.plot_model 画深度学习神经网络拓扑图
  3. java 搜索机制_Java爬虫搜索原理实现
  4. 几种TCP连接中出现RST的情况
  5. UOJ #282 糖果
  6. Matlab篇(三)MATLAB中conj的用法
  7. 什么是随机存取_SRAM存储器是什么存储器
  8. AAC音频基础知识及码流解析
  9. Activemq源码、编译、导入idea、源码调试总结
  10. STM32分散加载文件
  11. Matlab符号求导
  12. 购物车demo(内含bug)
  13. MYSQL第一章 创建表 修改表名 删除字段 添加字段 修改地段名
  14. 24点游戏java代码 中国开源社区_编程之美 1.16 24点游戏
  15. CRMEB商城公众号H5前端模板修改,nodejs使用教程
  16. php包含大马执行,分析一个常见的php大马并且解码过程
  17. 记2019届阿里校招第一面
  18. 计算机专业考研410分,从一个中专生到考研410分的历程
  19. React: 跳转页面+刷新(登陆成功后的动作)
  20. 计算机原理实验红绿灯转换,微机原理实验交通灯控制实验.doc

热门文章

  1. Android编译系统介绍
  2. Android NDK开发从0到1
  3. Android开发之蓝牙(Bluetooth)---源码目录
  4. android 源码打patch
  5. AVAssetWriter写入char*数据(video)
  6. python 全部缩进一行_每天三分钟一起学python之(三)python的基本语法
  7. js截图插件_WordPress外贸网站插件装多了很卡很卡?别慌,试试这招
  8. 电脑安装linux后打不开win,安装完linux后 windows无法启动
  9. 根据后台返回地址实现图片展示_微信小程序 - 前端接入七牛云上传图片和视频...
  10. query string parameter前端怎么传参_Substrate 前端开发-1: 用 Polkadot-JS API 轻松搭建前端