标签: tokenize

是否有比lex/flex更好(更现代)的工具来为C++生成标记化器?

我最近添加了源文件解析到现有工具,该工具从复杂的命令行参数生成输出文件.

命令行参数变得如此复杂以至于我们开始允许它们作为一个被解析的文件提供,就像它是一个非常大的命令行一样,但语法仍然很尴尬.所以我添加了使用更合理的语法解析源文件的功能.

我使用flex 2.5.4 for windows为这个自定义源文件格式生成了tokenizer,并且它有效.但我讨厌代码.全局变量,奇怪的命名约定以及它生成的c ++代码非常糟糕.现有的代码生成后端粘在flex的输出上 - 我不使用yacc或bison.

我即将重新回到代码中,我想使用更好/更现代的工具.有谁知道的东西.

  • 在Windows命令提示符下运行(Visual Studio集成是可以的,但我使用make文件来构建)
  • 生成适当的封装C++标记生成器.(没有全局变量)
  • 使用正则表达式来描述标记化规则(与lex语法兼容)
  • 不强迫我使用c-runtime(或伪造它)进行文件读取.(从记忆中解析)
  • 当我的规则强制令牌器回溯(或自动修复)时警告我
  • 让我完全控制变量和方法名称(所以我可以符合我现有的命名约定)
  • 允许我将多个解析器链接到单个.exe而不会发生名称冲突
  • 如果我愿意,可以生成UNICODE(16位UCS-2)解析器
  • 不是集成的tokenizer +解析器生成器(我想要更换lex,而不是lex + yacc替换)

如果这是唯一可用的东西,我可能会使用刚生成标记化表的工具.

c++ windows lex tokenize

22
推荐指数
4
解决办法
4351
查看次数

PHP tokenizer有哪些实际用途?

什么是PHP Tokenizer的实用和日常使用示例?

有没有人用过这个?

php tokenize

22
推荐指数
3
解决办法
1万
查看次数

如何在unix命令行中分割文件?

我正在为一个天真的布尔信息检索系统做更快的测试,我想使用awk,grep,egrep,sed或类似的东西和管道将文本文件拆分成单词并将它们保存到其他文件中,每行一个单词.示例我的文件cotains:

Hola mundo, hablo español y no sé si escribí bien la
pregunta, ojalá me puedan entender y ayudar
Adiós.
Run Code Online (Sandbox Code Playgroud)

输出文件应包含:

Hola
mundo
hablo
español
...
Run Code Online (Sandbox Code Playgroud)

谢谢!

unix awk command-line tokenize

22
推荐指数
2
解决办法
3万
查看次数

对字符串进行标记并在C++中包含分隔符

我对以下内容进行了解释,但不确定如何在其中包含分隔符.

void Tokenize(const string str, vector<string>& tokens, const string& delimiters)
{

    int startpos = 0;
    int pos = str.find_first_of(delimiters, startpos);
    string strTemp;


    while (string::npos != pos || string::npos != startpos)
    {

        strTemp = str.substr(startpos, pos - startpos);
        tokens.push_back(strTemp.substr(0, strTemp.length()));

        startpos = str.find_first_not_of(delimiters, pos);
        pos = str.find_first_of(delimiters, startpos);

    }
}
Run Code Online (Sandbox Code Playgroud)

c++ tokenize

20
推荐指数
1
解决办法
4836
查看次数

Tokenizer,停止Word删除,用Java编写

我正在寻找一个类或方法,它需要长达100多个单词和标记的字符串,删除用于IR系统的停用词和词干.

例如:

"那只肥胖的大猫,'我知道'你最有趣的家伙'给袋鼠......"

标记器将删除标点符号并返回ArrayList单词

停用词删除器会删除"the","to"等字样

词干将减少每个词的"根",例如"最有趣"会变得有趣

提前谢谢了.

java stemming tokenize stop-words

20
推荐指数
2
解决办法
5万
查看次数

如何将GWT Place URL从默认的":"更改为"/"?

默认情况下,GWT Place URL包含Place的简单类名(如"HelloPlace"),后跟冒号(:)和PlaceTokenizer返回的标记.

我的问题是如何将":"改为"/"?

gwt tokenize

20
推荐指数
2
解决办法
6712
查看次数

使用NLTK对阿拉伯语单词进行标记

我正在使用NLTK word_tokenizer将句子分成单词.

我想将这句话标记为:

??_????? ?? ?? ??? ?????? ???? ...???? ??? ???? ???? ????? ..????? ??? ???? ???? ???? ??? 
Run Code Online (Sandbox Code Playgroud)

我写的代码是:

import re
import nltk

lex = u" ??_????? ?? ?? ??? ?????? ???? ...???? ??? ???? ???? ????? ..????? ??? ???? ???? ???? ???"

wordsArray = nltk.word_tokenize(lex)
print " ".join(wordsArray)
Run Code Online (Sandbox Code Playgroud)

问题是该word_tokenize功能不会被单词拆分.相反,它按字母分割,以便输出为:

"? ? _ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? …
Run Code Online (Sandbox Code Playgroud)

python tokenize nltk

20
推荐指数
1
解决办法
9998
查看次数

nltk句子标记化器,将新行视为句子边界

我正在使用nltk PunkSentenceTokenizer将文本标记为一组句子.但是,标记化器似乎不会将新段落或新行视为新句子.

>>> from nltk.tokenize.punkt import PunktSentenceTokenizer
>>> tokenizer = PunktSentenceTokenizer()
>>> tokenizer.tokenize('Sentence 1 \n Sentence 2. Sentence 3.')
['Sentence 1 \n Sentence 2.', 'Sentence 3.']
>>> tokenizer.span_tokenize('Sentence 1 \n Sentence 2. Sentence 3.')
[(0, 24), (25, 36)]
Run Code Online (Sandbox Code Playgroud)

我希望将新行视为句子的边界.无论如何要做到这一点(我也需要保存偏移量)?

python nlp tokenize nltk

19
推荐指数
1
解决办法
5124
查看次数

如何在带有strtk的列表中使用"自定义split()"?

我已经阅读了http://www.codeproject.com/KB/recipes/Tokenizer.aspx,我希望在我的主要内容中有最后一个示例(最后,在所有图表之前)"扩展分隔符谓词",但是我当我将token_list分配给向量时,不会获得与文章作者相同的输出标记,为什么?

如何将真实结果放入列表或向量中?我想要这个:

  • list0 abc
  • list1 123,mno xyz
  • list2 i \,jk

但我有类似的东西:

  • list0 abc;"123,mno xyz",i \,jk
  • list1 123,mno xyz",i \,jk
  • list2 i \,jk

来源样本:

class extended_predicate
{
public:

   extended_predicate(const std::string& delimiters)
   : escape_(false),
     in_bracket_range_(false),
     mdp_(delimiters)
   {}

   inline bool operator()(const unsigned char c) const
   {
      if (escape_)
      {
         escape_ = false;
         return false;
      }
      else if ('\\' == c)
      {
         escape_ = true;
         return false;
      }
      else if ('"' == c)
      {
         in_bracket_range_ = !in_bracket_range_;
         return true;
      }
      else if …
Run Code Online (Sandbox Code Playgroud)

c++ split tokenize

18
推荐指数
1
解决办法
631
查看次数

使用nltk标记unicode

我有使用utf-8编码的文本文件,其中包含'ö','ü'等字符.我想解析这些文件的文本形式,但我无法让tokenizer正常工作.如果我使用标准的nltk标记器:

f = open('C:\Python26\text.txt', 'r') # text = 'müsli pöök rääk'
text = f.read()
f.close
items = text.decode('utf8')
a = nltk.word_tokenize(items)
Run Code Online (Sandbox Code Playgroud)

输出: [u'\ufeff', u'm', u'\xfc', u'sli', u'p', u'\xf6', u'\xf6', u'k', u'r', u'\xe4', u'\xe4', u'k']

Punkt tokenizer似乎做得更好:

f = open('C:\Python26\text.txt', 'r') # text = 'müsli pöök rääk'
text = f.read()
f.close
items = text.decode('utf8')
a = PunktWordTokenizer().tokenize(items)
Run Code Online (Sandbox Code Playgroud)

输出: [u'\ufeffm\xfcsli', u'p\xf6\xf6k', u'r\xe4\xe4k']

在我无法弄清楚的第一个令牌之前仍然有'\ ufeff'(不是我不能删除它).我究竟做错了什么?非常感谢.

python unicode tokenize nltk

18
推荐指数
2
解决办法
2万
查看次数

标签 统计

tokenize ×10

c++ ×3

nltk ×3

python ×3

awk ×1

command-line ×1

gwt ×1

java ×1

lex ×1

nlp ×1

php ×1

split ×1

stemming ×1

stop-words ×1

unicode ×1

unix ×1

windows ×1