一个PHP库/类来计算各种语言中的单词?

一个PHP库/类来计算各种语言中的单词?,php,nlp,utf-8,word-count,Php,Nlp,Utf 8,Word Count,在不久的将来,我将需要实现一个跨语言字数统计,或者如果这是不可能的,一个跨语言字符计数 我所说的字数是指给定文本中包含的准确字数,以文本的语言为准。文本的语言由用户设置,并将被认为是正确的 我所说的字符数是指给定文本中包含的“可能在一个单词中”字符数,具有上述相同的语言信息 我更喜欢前者,但我知道其中的困难。我也知道后一种计算方法要容易得多,但如果可能的话,我更喜欢前者 如果我只需要看英语,我就喜欢它,但是我需要考虑这里的每一种语言,汉语、韩语、英语、阿拉伯语、印地语等等。 我想知道Stack

在不久的将来,我将需要实现一个跨语言字数统计,或者如果这是不可能的,一个跨语言字符计数

我所说的字数是指给定文本中包含的准确字数,以文本的语言为准。文本的语言由用户设置,并将被认为是正确的

我所说的字符数是指给定文本中包含的“可能在一个单词中”字符数,具有上述相同的语言信息

我更喜欢前者,但我知道其中的困难。我也知道后一种计算方法要容易得多,但如果可能的话,我更喜欢前者

如果我只需要看英语,我就喜欢它,但是我需要考虑这里的每一种语言,汉语、韩语、英语、阿拉伯语、印地语等等。 我想知道Stack Overflow是否有任何线索,可以从哪里开始寻找现有的产品/方法来在PHP中实现这一点,因为我是一个很好的懒惰程序员*

显示set_语言环境下str_word_计数如何不起作用,以及php.net str_word_计数页面中的一个函数

*好吧,试试:

<?
function count_words($str){
     $words = 0;
     $str = eregi_replace(" +", " ", $str);
     $array = explode(" ", $str);
     for($i=0;$i < count($array);$i++)
      {
         if (eregi("[0-9A-Za-zÀ-ÖØ-öø-ÿ]", $array[$i]))
             $words++;
     }
     return $words;
 }
 echo count_words('This is the second one , it will count wrong as well" , it will count 12 instead of 11 because the comma is counted too.');
 ?>

计数字符很容易:

echo strlen('一个有十的字符的句子'); // 30 (WRONG!)
echo strlen(utf8_decode('一个有十的字符的句子')); // 10
计算单词开始变得棘手,特别是对于不使用空格(或其他常见的“单词边界”字符)作为单词分隔符的汉语、日语和其他语言。我不会说中文,我也不明白中文是如何计算单词的,所以你得教我一点——这些语言中的单词是什么?是否有任何特定字符或字符集?我记得读过一些关于T9写作中识别日语单词有多难的文章,但我再也找不到了

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

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

如果你只想要近似的而不想要精确的单词,一个快速的技巧是

<?php echo count(explode(' ',$string)); ?>


它通过计算任何语言中的空格来工作。我已经用这个作为翻译脚本。同样,它不会计算确切的单词,但会在段落中给出大致的单词。

我来自葡萄牙,现在是早上6点。。。我确实睡着了。。。但在我能适应汉语和其他任何语言之后…:)中文、韩文、日文(…)不使用“.CJK”将是最棘手的,因为它们不使用空格分隔单词。敏锐的观察。这就是我把问题贴在这里的原因;)这是我之前提出的一个问题,作为回答:你能更具体地说明“字数”是什么意思吗?你想确认该语言的词典中确实存在一个单词吗,或者您只是在寻找由该语言的分隔符分隔的短语计数?日语\u 1000_lorem.docx计数了29个单词,而不是1000个单词,我有一个$string=preg\u replace(“{{.*.}}}}}s',“,$string”);在使用count函数之前,
.docx
应该是一个二进制文件-因此,如果要执行此操作,可能需要使用word文档解析器或纯文本文件。