窝牛号

基于fasttext与langid文本语种识别的python代码实现

上期文章,我们分享了OpenAI开源的能识别99种语言的语音识别系统——whisper。

Whisper 是一种自动语音识别模型,基于从网络上收集的 680,000 小时多语言数据进行训练。根据 OpenAI的介绍,该模型对口音、背景噪音和技术语言具有很好的鲁棒性。此外,它还支持 99 种不同语言的转录和从这些语言到英语的翻译。

whisper语音识别系统

虽然Open AI开源的whisper语音识别系统,可以识别出不同的语音,且同样可以识别出语音的语种,但是whisper主要应用在语音识别系统上面,且我们运行whisper系统需要大型的模型。当我们仅仅来识别不同的语言文字,且要识别出语言文字的语种时,我们可以使用小型的模型来识别,比如langid,fasttext等等。

langid文本语种识别

在Facebook发布fasttext之前,比较著名的语种识别库是langid,langid是一个小型的语种识别库,其模型只有2.5MB的大小,精度已经达到了91.3以上,虽然模型较小,但是功能确实是比较强大,且可以支持97种的文本语种检测。

使用langid十分简单,我们只需要使用如下代码安装使用即可

pip install langid langid

第一步首先是使用pip安装langid即可

然后在cmd命令行中直接输入langid,软件会提示需要输入的文本,这时候,我们直接输入不同语种的文本,langid会自动检测出文本的语种,并显示。

langid在如下数据集上面进行训练: JRC-Acquis ClueWeb 09 Wikipedia Reuters RCV2 Debian i18n langid支持的97个语种: af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu

当然,我们也可以使用python代码来实现langid的文本语种检测

import langid langid.classify(&34;) (&39;, -54.41310358047485)

当然在使用langid之前,我们需要安装langid,并使用import来导入langid库

最后使用classify函数来进行文本的语种检测,脚步会打印出识别语种的iso代码,我们可以根据语种ISO标准来索引识别出来的语种。

当然,为了加快模型的预测时间,我们可以指定几个语种,让模型从指定的语种中来进行语种的预测。

import langid langid.classify(&34;) (&39;, 0.57133487679900674) langid.set_languages([&39;,&39;,&39;]) langid.classify(&34;) (&39;, 0.99999835791478453) langid.set_languages([&39;,&39;]) langid.classify(&34;) (&39;, 0.99176190378750373)

更多使用技巧可以参考GitHub开源地址

https://github.com/saffsd/langid.py

fasttext文本语种识别

fasttext是一个进行文本分类,识别以及单词编码的文本操作库,我们可以使用fasttext进行单词的编码也是我们前期介绍transformer模型的embedding操作,我们可以通过fasttext来进行单词的word embedding操作。

当然fasttext也可以进行文本的分类操作,且同样可以进行文本的语种分类操作。下图列举了fasttext在语种分类上面与langid的区别。就算是fasttext small小模型,其速度与精度都大大超过了langid模型。

fasttext与langid的模型对吧

不仅在模型速度与精度的区别,其fasttext的文本语种检测数量更是达到了176种的语种识别

https://fasttext.cc/docs/en/language-identification.html lid.176.bin, which is faster and slightly more accurate, but has a file size of 126MB ; lid.176.ftz, which is the compressed version of the model, with a file size of 917kB. 支持的176个语种如下: af als am an ar arz as ast av az azb ba bar bcl be bg bh bn bo bpy br bs bxr ca cbk ce ceb ckb co cs cv cy da de diq dsb dty dv el eml en eo es et eu fa fi fr frr fy ga gd gl gn gom gu gv he hi hif hr hsb ht hu hy ia id ie ilo io is it ja jbo jv ka kk km kn ko krc ku kv kw ky la lb lez li lmo lo lrc lt lv mai mg mhr min mk ml mn mr mrj ms mt mwl my myv mzn nah nap nds ne new nl nn no oc or os pa pam pfl pl pms pnb ps pt qu rm ro ru rue sa sah sc scn sco sd sh si sk sl so sq sr su sv sw ta te tg th tk tl tr tt tyv ug uk ur uz vec vep vi vls vo wa war wuu xal xmf yi yo yue zh

关于fasttext的文本分类与单词embedding操作,这里不作过多的介绍,可以参考fasttext的官方文档进行操作

https://fasttext.cc 官方教程比较详细,可以进行参考学习

这里,我们主要介绍一下基于fasttext的176个文本语种识别的python代码实现过程

pip install fasttext https://fasttext.cc/docs/en/language-identification.html lid.176.bin

首先我们需要使用pip来安装fasttext库,并到fasttext开源地址上下载其文本语种识别的训练模型lid.176.bin文件

import fasttext model = fasttext.load_mode(&39;) text = &39; predict = model.predict(text,k=1) >>_lable_en

我们直接使用load_mode函数来加载预训练模型,然后使用model模型的predict来进行文本语种的预测操作,这里的参数k=1,代表是选择概率最大的一个语种。运行代码后,模型会输出预测的文本语种。

文本语种ISO附录

语种ISO简写参考如下链接 https://www.loc.gov/standards/iso639-2/php/code_list.php

ISO 639-2 Code

ISO 639-1 Code

English name of Language

French name of Language

German name of Language

aar

aa

Afar

afar

Danakil-Sprache

abk

ab

Abkhazian

abkhaze

Abchasisch

asm

as

Assamese

assamais

Assamesisch

eng

en

English

anglais

Englisch

chi (B)zho (T)

zh

Chinese

chinois

Chinesisch

zul

zu

Zulu

zoulou

Zulu-Sprache

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1