维基媒体/文本猫

TextCat语言猜测器实用程序的PHP端口,请参阅网址:http://odur.let.rug.nl/~vannoord/TextCat/。

2.0.0 2022-03-15 15:54 UTC

此软件包是自动更新的。

上次更新时间:2024-04-12 22:28:45 UTC


自述文件

/\_/\( . . )=\ _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_拉特可以使用模型检测在键盘错误。例如,在俄语上键入法语或西班牙语西里尔文键盘更接近模型,而不是俄罗斯模式。