Regex 将UTF-8编码字符串中的单词与Ruby 1.9.1匹配

Regex 将UTF-8编码字符串中的单词与Ruby 1.9.1匹配,regex,encoding,ruby-1.9,Regex,Encoding,Ruby 1.9,我想匹配给定字符串中的所有单个单词,前提是该字符串是UTF-8编码的,然后我对每个单词进行拼写检查。只要是纯英语文本,我的代码就能正常工作,但如果有一些字符,比如说德语字符,我的单词就会在这些字符上一分为二。如何匹配文本中包含拉丁字符而非拉丁字符的单个单词 我现在做的是: text.gsub(/[\w\']+/) do |word| "replacement" end 但是,对于包含oooäuuu的文本,将以替换ä替换结束,即:德语字符不被视为word的一部分。根据Pickaxe,字符类与[A

我想匹配给定字符串中的所有单个单词,前提是该字符串是UTF-8编码的,然后我对每个单词进行拼写检查。只要是纯英语文本,我的代码就能正常工作,但如果有一些字符,比如说德语字符,我的单词就会在这些字符上一分为二。如何匹配文本中包含拉丁字符而非拉丁字符的单个单词

我现在做的是:

text.gsub(/[\w\']+/) do |word| "replacement" end

但是,对于包含oooäuuu的文本,将以替换ä替换结束,即:德语字符不被视为word的一部分。

根据Pickaxe,字符类与[A-Za-z0-9ä]完全等效,后者显然不包括重音字符。根据您的区域设置,您可能会发现POSIX类[:alpha:]是您想要的,我想您会使用/[:alpha:][']+/,但我可能在regexp的确切格式上出错。

根据Pickaxe的说法,\w character类完全等同于[A-Za-z0-9],这显然不包括重音字符。根据您所在的区域设置,您可能会发现POSIX类[:alpha:]是您想要的,我想您会使用/[:alpha:][']+/,但我可能对regexp的确切格式有错误。

您需要的是英语|德语|。。。标记器?自然语言中的标记化并不像寻找空白那样简单。例如,如果你想表达这句话:洛杉矶是一座美丽的城市。如果你想在字典里找到它,洛杉矶应该被认为是一个词而不是两个词

你还应该处理标点符号,缩写、分隔符、引号、阴蒂收缩等

汉语或日语等语言中的标记化要困难得多


Jurafsky和Martin在第3.9.1章的语音和语言处理中提供了一个简单的英语标记化perl脚本。

您需要的是英语|德语|。。。标记器?自然语言中的标记化并不像寻找空白那样简单。例如,如果你想表达这句话:洛杉矶是一座美丽的城市。如果你想在字典里找到它,洛杉矶应该被认为是一个词而不是两个词

你还应该处理标点符号,缩写、分隔符、引号、阴蒂收缩等

汉语或日语等语言中的标记化要困难得多


Jurafsky和Martin在第3.9.1章的语音和语言处理中提供了一个简单的英语标记化perl脚本。

这看起来效果很好:

/[[:word:]]+/

那太容易了

看来这很有效:

/[[:word:]]+/

那太容易了

你能澄清一下什么是断字吗?您是否希望簿记员分为簿记员和簿记员?您能否确切说明什么构成断字?您是否希望簿记员分成簿记员和簿记员?看起来不错;不过,你不需要避开撇号;不过,你不需要避开撇号。