在 C++ 中标记 latin-1 文本

Tokenize latin-1 text in c++

我有 mysql table 和拉丁文。我正在尝试将此文本标记为单词。

我遇到了 boost 和 ICU 分词器。问题是这些图书馆希望我弄清楚单词边界。

我尝试了以下提升代码,(使用默认分词器,即 spaces 和标点符号)。

int main(){

   using namespace std;
   using namespace boost;

   string s = "Tänk efter nu – förr'n vi föser dig bort";
   tokenizer<> tok(s);

   for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){
       cout << *beg << "\n";
   }

   return 0;
}

它确实给了我单词列表。但这里我假设 space 是正确的单词分隔符。

考虑到这些(http://en.wikipedia.org/wiki/ISO/IEC_8859-1#Languages_with_complete_coverage)语言的集合,使用上面的代码是否安全?

或者您还有其他解决方案吗?

ICU 支持考虑文本语言特点的边界分析:

http://userguide.icu-project.org/boundaryanalysis