用于计算各种语言单词的PHP库/类?

Mic*_*son 11 php nlp utf-8 word-count

在不久的将来的某个时候,我将需要实现跨语言字数,或者如果不可能,则需要跨语言字符数.

字数统计是指给定文本中包含的单词的准确计数,采用文本的语言.文本的语言由用户设置,并且将被假定为正确.

字符数是指给定文本中包含的"可能在单词中"字符的计数,具有上述相同的语言信息.

我更喜欢前者,但我知道所涉及的困难.我也知道后者的数量要容易得多,但如果可能的话,非常喜欢前者.

如果我只是看英语,我会喜欢它,但我需要考虑这里的所有语言,中文,韩文,英文,阿拉伯文,印地文等.

我想知道Stack Overflow是否有任何线索在哪里开始寻找现有的产品/方法在PHP中执行此操作,因为我是一个很好的懒惰程序员*

一个简单的测试,显示了如何使用set_locale的str_word_count,以及来自php.net的str_word_count页面的函数.

*http://blogoscoped.com/archive/2005-08-24-n14.html

Ali*_*xel 5

计算字符很容易:

echo strlen('??????????'); // 30 (WRONG!)
echo strlen(utf8_decode('??????????')); // 10
Run Code Online (Sandbox Code Playgroud)

计算单词是事情开始变得棘手的地方,特别是对于不使用空格(或其他常见的"单词边界"字符)作为单词分隔符的中文,日语和其他语言.我不会说中文,我不明白字数是如何用中文的,所以你必须教育我一点 - 用这些语言说什么?是特定的字符或字符集吗?我记得读过一些与T9写作中识别日语单词有多难有关的内容,但却找不到了.

以下内容应正确返回使用空格或标点符号作为单词分隔符的语言中的单词数:

count(preg_split('~[\p{Z}\p{P}]+~u', $string, null, PREG_SPLIT_NO_EMPTY));
Run Code Online (Sandbox Code Playgroud)

  • `.docx`应该是一个二进制文件 - 所以如果你想这样做,你可能需要使用word doc解析器或纯文本文件. (2认同)