标签: tokenize

这是词法分析器的工作吗?

假设我正在对 ruby​​ 方法定义进行词法分析:

def print_greeting(greeting = "hi")  
end
Run Code Online (Sandbox Code Playgroud)

词法分析器的工作是维护状态并发出相关标记,还是应该相对愚蠢?请注意,在上面的示例中,greeting参数的默认值为"hi"。在不同的上下文中,greeting = "hi"变量赋值设置greeting"hi"。词法分析器应该发出诸如 之类的通用标记IDENTIFIER EQUALS STRING,还是应该具有上下文感知能力并发出诸如 之类的东西PARAM_NAME EQUALS STRING

compiler-construction parsing lexical-analysis tokenize

4
推荐指数
1
解决办法
526
查看次数

tokenizer.py 中的 NL 和 NEWLINE 有什么区别?

我正在尝试为 Java重写tokenizer.py,以便我可以在 Java 中解析 Python,但我不明白源代码NLNEWLINE源代码之间的区别。他们似乎是同一件事,但如果他们这样做了,那么哪里有两个令牌?

python tokenize

4
推荐指数
1
解决办法
804
查看次数

用C中的多字符分隔符拆分字符字符串

我想char *string根据多字符分隔符拆分 a 。我知道它strtok()用于拆分字符串,但它适用于单字符分隔符。

我想根据子字符串(例如"abc"或任何其他子字符串)拆分 char * string 。如何实现?

c string parsing tokenize delimiter

4
推荐指数
1
解决办法
8888
查看次数

通过子字符串拆分字符串

我有以下字符串:

char str[] = "A/USING=B)";
Run Code Online (Sandbox Code Playgroud)

我想分获得独立的AB值与/USING=作为分隔符

我该怎么做?我知道,strtok()但它只是被一个字符分割为分隔符。

c string tokenize strtok

4
推荐指数
2
解决办法
6516
查看次数

在 C 中编写语法标记器/解析器的最佳方法是什么?

背景信息:
我有一个编程语言的愿望,知道这样做的工具,我没有任何关于如何使用它们的好例子。我真的不想使用 Flex 或 Bison,因为它们没有教授我认为创建编译器所需的抽象性。我有创建字符串、标记它们、将它们提供给充当语法和解析的文件的概念,最终创建一个实际的程序来运行该语言。问题是,我不知道如何编写标记器或解析器。我有一般的想法,但当我看到例子时我会更好地理解。如果有人可以发布一个/几个示例,那就太好了!

我的问题如下:
有人可以发布如何在 C 中编写语法标记器/解析器的示例吗?

c string parsing tokenize

4
推荐指数
1
解决办法
4451
查看次数

'IDENTIFIER' 规则也使用 ANTLR Lexer 语法中的关键字

在研究用于 Java 解析的 Antlr 3.5 语法时,注意到“ IDENTIFIER ”规则在 ANTLR 词法分析器语法中消耗了很少的关键字。词法分析器语法是

lexer grammar JavaLexer;

options {
   //k=8;
   language=Java;
   filter=true;
   //backtrack=true;
}

@lexer::header {
package java;
}

@lexer::members {
public ArrayList<String> keywordsList = new ArrayList<String>();
}

V_DECLARATION
:
( ((MODIFIERS)=>tok1=MODIFIERS WS+)? tok2=TYPE WS+ var=V_DECLARATOR WS* )
{...};

fragment
V_DECLARATOR
  :
  (
    tok=IDENTIFIER WS* ( ',' | ';' | ASSIGN WS* V_VALUE )
  )
  {...};

fragment
V_VALUE
: (IDENTIFIER (DOT WS* IDENTIFIER WS* '(' | ',' | ';'))
;

MODIFIERS
  :
  (PUBLIC | …
Run Code Online (Sandbox Code Playgroud)

java parsing antlr tokenize antlr3

4
推荐指数
1
解决办法
1621
查看次数

NLTK 单词与 word_tokenize

我正在探索 NLTK 的一些语料库并遇到以下行为:word_tokenize() 和 words 产生不同的 words() 集

下面是一个使用 webtext 的例子:

from nltk.corpus import webtext
Run Code Online (Sandbox Code Playgroud)

当我运行以下命令时,

len(set(word_tokenize(webtext.raw('wine.txt'))))
Run Code Online (Sandbox Code Playgroud)

我得到:3488

当我运行以下命令时,

len(set(webtext.words('wine.txt')))
Run Code Online (Sandbox Code Playgroud)

我得到:3414

我在文档中只能找到 word_tokenize 是标点符号和单词的列表。但它也说单词是标点符号和单词的列表。我想知道,这里发生了什么?他们为什么不同?

我已经尝试查看设置差异。

U = set(word_tokenize(webtext.raw('wine.txt')))
V = set(webtext.words('wine.txt'))

tok_not_in_words = U.difference(V) # in tokenize but not in words
words_not_in_tok = V.difference(U) # in words but not in tokenize
Run Code Online (Sandbox Code Playgroud)

我只能看到 word_tokenize 包含带连字符的单词,而单词将带连字符的单词分开。

任何帮助表示赞赏。谢谢!

python nlp corpus tokenize nltk

4
推荐指数
1
解决办法
2633
查看次数

AttributeError:“Tokenizer”对象在 Keras 中没有属性“oov_token”

我正在尝试使用加载的标记生成器对文本进行编码,但出现以下错误

AttributeError: 'Tokenizer' object has no attribute 'oov_token'

我添加了以下代码:

from keras.preprocessing.text import Tokenizer
from keras.preprocessing import sequence
from keras.models import Model, Input, Sequential, load_model
import pickle
import h5py

maxlen = 100
tok = open('tokenizer.pickle', 'rb')
tokenizer = pickle.load(tok)
tok.close()
model = load_model('weights.h5')

def predict():
    new_text = sequence.pad_sequences((tokenizer.texts_to_sequences(['heyyyy'])), maxlen=maxlen)
    prediction = model.predict(new_text,batch_size=1,verbose=2)
Run Code Online (Sandbox Code Playgroud)

问题出现在线路上tokenizer.texts_to_sequences(['heyyyy']),我不知道为什么。是不是泡菜有问题?tokenizer.texts_to_sequences'hey''heyy'、 和 一起工作'heyyy'

任何指导表示赞赏!

python nlp pickle tokenize keras

4
推荐指数
1
解决办法
8730
查看次数

ParserError:标记数据时出错。C 错误:第 4 行预期有 7 个字段,在读取 csv 文件 pandas 时看到 10 个错误

我正在尝试csv使用熊猫读取文件

df1 = pd.read_csv('panda_error.csv', header=None, sep=',')
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

ParserError: Error tokenizing data. C error: Expected 7 fields in line 4, saw 10
Run Code Online (Sandbox Code Playgroud)

为了重现性,这里是 csv 文件 panda_error.csv

superkingdom:Bacteria , phylum:Actinobacteria , class:Actinobacteria , order:Corynebacteriales , family:Corynebacteriaceae , genus:Corynebacterium , species:Corynebacterium efficiens  1
superkingdom:Bacteria , phylum:Proteobacteria , class:Alphaproteobacteria , order:Rhizobiales , family:Aurantimonadaceae , genus:Aurantimonas , species:Aurantimonas manganoxydans  1
superkingdom:Bacteria , phylum:Proteobacteria , subphylum:delta/epsilon subdivisions , class:Deltaproteobacteria , no rank:unclassified Deltaproteobacteria , genus:Candidatus Entotheonella    1
superkingdom:Bacteria , phylum:Proteobacteria , class:Gammaproteobacteria , order:Pseudomonadales …
Run Code Online (Sandbox Code Playgroud)

python tokenize dataframe pandas

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

如何阻止 BERT 将特定单词分解成词块

我正在使用预先训练的 BERT 模型将文本标记为有意义的标记。然而,文本有很多特定的词,我不希望 BERT 模型将它们分解成词块。有什么解决办法吗?例如:

tokenizer = BertTokenizer('bert-base-uncased-vocab.txt')
tokens = tokenizer.tokenize("metastasis")
Run Code Online (Sandbox Code Playgroud)

像这样创建令牌:

['meta', '##sta', '##sis']
Run Code Online (Sandbox Code Playgroud)

但是,我想将整个单词保留为一个标记,如下所示:

['metastasis']
Run Code Online (Sandbox Code Playgroud)

python text nlp tokenize bert-language-model

4
推荐指数
2
解决办法
1581
查看次数