自述文件
/\_/\( . . )=\ _v_/=菲律宾比索
这是TextCat语言猜测器实用程序的PHP端口。
另请参阅原始Perl版本、和已更新Perl版本.
目录
该包包含分类器类本身和一些工具对文本进行分类并生成ngram数据库。代码现在假设文本编码是UTF-8,因为它更容易提取ngram是这样的。此外,(几乎)现在每个人都使用UTF-8,我就是其中之一,欢迎我们新的UTF-8编码霸主。
构建包
下载包后,需要使用作曲家
。运行以下命令以安装所有与开发相关的依赖项:
编写器安装
要安装minimum以启动并运行,请使用运行命令--无偏差
.
编写器安装--no-dev
Composer依赖项安装在供应商/
目录和是TextCat正常运行所必需的。
分类器
分类器是脚本猫.php
,可以运行为:
echo“Bonjour tout le monde,ceci est un texte en français”|php catus.php-d LM
或
php catus.php-d LM-l“祝你好运,ceci est un texte en français”
输出将是检测到的语言列表,由或
,例如。:
fr或ro
请注意,所提供的语言模型集合包括的模型奥里亚语(ଓଡ଼ିଆ),它有语言代码或
,因此结果如下或or sco或ro或nl
是可能的。
发电机
要从一组文本生成语言模型数据库,请使用脚本猫科动物.php
。它可以运行为:
php felis.php输入目录输出目录
并将阅读输入目录
并在中生成ngrams文件输出红外
。中的文件输入目录
假设名称如下语言.txt
,例如。英语.txt
,德语.txt
,克林贡.txt
等。
如果您使用的是大型语料库(例如,数百万个字符),你应该设置$最小频率
在里面文本猫.php
价值相当小,喜欢10
在不常见的ngram出现之前修剪它们的长尾已排序。这减少了生成语言模型。什么时候?评价文本,$最小频率
应设置返回到0
除非您的输入文本相当大。
转换器
另一个脚本,lm2php.php
,用于转换Perl版本的TextCat使用的格式转换为版本。它可以运行为:
php lm2php.php输入目录输出目录
中的Perl样式模型输入目录
将转换为PHP风格的模型已写入输出红外
,具有相同的名称。
模型
该软件包在LM公司
目录和中基于查询的语言模型数据库LM-查询
目录。然而,模型性能在很大程度上取决于文本它将应用于语料库,以及特定的修改-e.g。大写字母、变音符号等。当前库不会修改或者以任何方式规范培训文本或分类文本,所以使用自定义语言模型可能更适合于特定的应用。
型号名称使用维基百科语言代码,其中包括通常但不能保证与ISO 639语言代码.(但另请参见键盘/编码型号错误(见下文)
当检测语言时,当您可以限制正在使用的语言模型的数量,尤其是短文本。例如,如果您的文本几乎不可能可能是爱尔兰盖尔语,包括爱尔兰盖尔语言模式(加仑
)只会增加误认的可能性。这是尤其适用于密切相关的语言(如浪漫主义语言或英语/恩
和苏格兰人/上海合作组织
).
限制使用的语言模型的数量通常也会提高性能。您可以将所需的语言模型复制到新的目录(并使用-d日
具有猫.php
)或指定您想要的命令行上的语言(使用-c(c)
具有猫.php
).
您还可以在多个目录中组合模型(例如,使用基于查询的模型,并回退到基于Wiki文本的模型)以逗号分隔的目录列表(使用-d日
具有猫.php
).目录按顺序扫描,只有找到第一个带有将使用特定的名称。
Wiki-Text模型
中的70多种语言模型LM公司
基于随机提取的文本该语言的维基百科精选文章。语言入选者是根据一系列标准选择的,包括数量对于以英语为母语的人,各种查询的数量维基语言项目(不仅仅是维基百科)原始TextCat支持的语言以及Wikipedia的大小语言(即从中绘制训练语料库)。
每种语言的训练语料库最初由2.7到约280万个字符,不包括标记。然后,文本很轻松已预处理。所采取的预处理步骤包括:删除HTML标记。行已排序uniq公司
-ed(所以维基百科的特质是“参考文献”、“另请参阅”和“本文是一个存根”-不是代表人数过多,因此文章随机选择多次被缩减为一份)。对于拉丁字符集中的语料库,行删除了不包含拉丁字符的。用于非拉丁语语料库字符集、仅包含拉丁字符的行、数字和标点符号被删除。此基于字符的筛选已删除从各种语料库中的几十行到数千行。对于语料库在多字符集中(例如,塞尔维亚-克罗地亚语/第页
,塞尔维亚语/锶
,土库曼/tk公司
),没有进行基于字符的过滤。决赛训练语料库的大小在约180万至约280万个字符之间。
这些模型还没有经过彻底测试,是按原样提供的。我们将来可能会添加新模型或删除性能较差的模型。
这些型号有10000个ngram。可用于的最佳ngram数语言识别依赖于应用程序。对于较大的文本(例如,每个样本包含数百个单词),明显较小ngram集可能是最好的。您可以通过更改来设置要使用的数字$maxNgrams(最大值)
在里面文本猫.php
或在中猫科动物.php
,或使用-米
具有猫.php
.
Wiki查询模型
中的30多种语言模型LM-查询
基于来自的查询数据不太正式的维基百科(例如,在语言),并且单词的分布与一般文本。最初考虑的一组语言基于特定一周内所有wiki项目的查询数。这个文本已被预处理,许多查询已从根据类似于上面的Wiki-Text模型。
一般来说,查询数据比包含垃圾的Wiki-Text要混乱得多意外语言中的文本和查询-但在查询字符串,至少对于英语维基来说更好。
提供的最终模型部分基于其性能英语维基百科查询(第一个使用语言ID的目标文本类别)。有关更多详细信息,请参阅我们的初次报告在TextCat上。未来将在其他语言的基础上添加更多语言绩效评估。
这些型号有10000个ngram。要使用的ngram的最佳数量语言识别依赖于应用程序。对于较大的文本(例如,每个样本包含数百个单词),明显较小ngram集可能是最好的。英文维基百科上的简短查询字符串,3000到9000 ngram的型号效果最好,具体取决于其他参数设置。您可以设置要使用的数字改变$maxNgrams(最大值)
在里面文本猫.php
或在中猫科动物.php
,或使用-米
具有猫.php
.
键盘/编码型号错误
提供的五个模型都基于“不正确”的输入类型使用错误的键盘或错误的编码。
当某人使用两个不同的键盘时,会发生键盘输入错误俄语西里尔文和美国英语,输入错误的单词。这个例如,在俄罗斯和希伯来语维基百科上相当常见。什么看起来像胡言乱语,jutvcrfz hfgcjlbz-实际上是合理的如果在另一个键盘上按相同的键,则显示文本-在这种情况下,богемская рапсодия(“波希米亚狂喜”)。对于错误的键盘输入字符之间的映射是一对一的,因此现有模型可以是直接转换。
当使用一个字符对文本进行编码时,会出现错误的编码输入编码(如UTF-8型)但是是解释为不同的字符编码(例如窗口-1251),这将导致在某种程度上Москва(“莫斯科”)被视为РР。由于字符映射是1对2(例如。,М→Рњ),模型需要从错误编码的样本文本中重新生成。
提供的错误键盘/编码型号包括:
en_年.lm
(在wiki文本和wiki查询版本中)-英文为在俄罗斯西里尔文键盘上意外键入。
ru_拉特.lm
(在wiki-text和wiki查询版本中)-俄语为在美国英语键盘上意外键入。
鲁文1251.lm
(仅在wiki-text版本中)-意外使用UTF-8俄语解释为在Windows-1251中编码。
根据应用程序年
和ru_拉特
可以使用模型检测在键盘错误。例如,在俄语上键入法语或西班牙语西里尔文键盘更接近年
模型,而不是俄罗斯模式。