“令牌”和“特殊令牌”到底有什么区别?
\n我了解以下内容:
\n我不明白的是,您想要在什么样的容量下创建新的特殊令牌,我们需要它的任何示例以及何时想要创建除默认特殊令牌之外的特殊令牌?如果一个示例使用特殊令牌,为什么普通令牌不能实现相同的目标?
\ntokenizer.add_tokens(['[EOT]'], special_tokens=True)\nRun Code Online (Sandbox Code Playgroud)\n而且我也不太明白源文档中的以下描述。\n如果我们将 add_special_tokens 设置为 False,这对我们的模型有什么区别?
\nadd_special_tokens (bool, optional, defaults to True) \xe2\x80\x94 Whether or not to encode the sequences with the special tokens relative to their model.\nRun Code Online (Sandbox Code Playgroud)\n nlp tokenize bert-language-model huggingface-transformers huggingface-tokenizers
在csv值中传递时,如何创建以表格格式返回结果的包.
select * from table(schema.mypackage.myfunction('one, two, three'))
Run Code Online (Sandbox Code Playgroud)
应该回来
one
two
three
Run Code Online (Sandbox Code Playgroud)
我试过问汤姆但是只适用于sql类型.
我正在使用oracle 11g.内置有什么东西吗?
我希望能够做的是执行查询并获得不区分大小写并且匹配索引中的部分单词的结果.
我已经修改了一个Solr模式,这样我就可以查询并返回结果,无论它们是什么情况.所以,如果我搜索iPOd,我会看到iPod返回.执行此操作的代码是:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</analyzer>
...
</fieldType>
Run Code Online (Sandbox Code Playgroud)
我发现这个代码允许我们进行部分单词匹配查询,但我认为我不能在一个字段上有两个标记符.
<fieldType name="text" class="solr.TextField" >
<analyzer type="index">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
...
</fieldType>
Run Code Online (Sandbox Code Playgroud)
那么我该怎样做才能在场上执行这个标记器呢?
或者有没有办法合并它们?
或者还有另一种方法可以完成这项任务吗?
我正在尝试编写一个可重用的解析库(为了好玩).
我写了一个Lexer生成序列的类Tokens.Token是子类层次结构的基类,每个子类表示不同的标记类型,具有自己的特定属性.例如,有一个子类LiteralNumber(从导出Literal,并通过它从Token),其具有用于处理其词位的数值其自身特定的方法.一般处理词位的方法(检索它们的字符串表示,源中的位置等)在基类中Token,因为它们对所有标记类型都是通用的.此类层次结构的用户可以为我未预测的特定令牌类型派生自己的类.
现在我有一个Parser类来读取标记流并尝试将它们与其语法定义相匹配.例如,它有一个方法matchExpression,该方法又调用matchTerm并调用此方法,该方法matchFactor必须测试当前标记是否为(Literal或者Name都是从Token基类派生的).
问题是:
我现在需要检查流中当前令牌的类型是什么,以及它是否与语法匹配.如果没有,抛出EParseError异常.如果是,则相应地采取行动以在表达式中获取其值,生成机器代码,或者在语法匹配时执行解析器需要执行的任何操作.
但是我已经阅读了很多关于在运行时检查类型并且从中做出决定,这是一个糟糕的设计™,它应该被重构为多态虚拟方法.当然,我同意这一点.
所以我的第一次尝试是type在Token基类中放置一些虚方法,这将被派生类重写并返回一些enum类型为id的类.
但是我已经看到了这种方法的缺点:从Token他们自己的令牌类派生的用户将无法添加额外的id enum,这是在库源中!: - /目标是允许他们在需要时扩展新类型令牌的层次结构.
我也可以string从type方法中返回一些,这样可以轻松定义新类型.
但是,在这两种情况下,基本类型的信息都会丢失(只有叶子类型从type方法返回),当有人从它派生并且覆盖它以返回其他内容时,Parser类将无法检测Literal派生类型type比"Literal".
当然,这个Parser类也是用户扩展的(也就是说,编写自己的解析器,识别自己的标记和语法)并不知道Token将来会有什么类的后代.
许多有关设计的常见问题解答和书籍建议在此场景中采用需要按类型决定的代码中的行为,并将其放入派生类中的虚拟方法覆盖中.但我无法想象如何将这种行为放入Token后代,因为例如,生成机器代码或计算表达式不是他们的业务.此外,语法的某些部分需要匹配多个令牌,因此没有一个特定的令牌可以将该行为放入其中.这是特定语法规则的责任,它可以匹配多个令牌作为其终端符号. …
我正在使用Facet Terms获取字段的所有唯一值及其计数.而且我得到了错误的结果.
term: web
Count: 1191979
term: misc
Count: 1191979
term: passwd
Count: 1191979
term: etc
Count: 1191979
Run Code Online (Sandbox Code Playgroud)
而实际结果应该是:
term: WEB-MISC /etc/passwd
Count: 1191979
Run Code Online (Sandbox Code Playgroud)
这是我的示例查询:
{
"facets": {
"terms1": {
"terms": {
"field": "message"
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我是Solr的新手.通过阅读Solr的wiki,我不明白WhitespaceTokenizerFactory和StandardTokenizerFactory之间的区别.他们真正的区别是什么?
假设我正在使用strtok()这样的..
char *token = strtok(input, ";-/");
Run Code Online (Sandbox Code Playgroud)
有没有办法找出实际使用哪个令牌?例如,如果输入类似于:
Hello there; How are you? / I'm good - End
我可以找出每个令牌使用哪个分隔符?我需要能够输出特定的消息,具体取决于令牌后面的分隔符.
如果我有一个字符串
'x+13.5*10x-4e1'
Run Code Online (Sandbox Code Playgroud)
如何将其拆分为以下令牌列表?
['x', '+', '13', '.', '5', '*', '10', 'x', '-', '4', 'e', '1']
Run Code Online (Sandbox Code Playgroud)
目前我正在使用shlex模块:
str = 'x+13.5*10x-4e1'
lexer = shlex.shlex(str)
tokenList = []
for token in lexer:
tokenList.append(str(token))
return tokenList
Run Code Online (Sandbox Code Playgroud)
但这回归:
['x', '+', '13', '.', '5', '*', '10x', '-', '4e1']
Run Code Online (Sandbox Code Playgroud)
所以我试图从数字中分割字母.我正在考虑使用包含字母和数字的字符串然后以某种方式拆分它们,但不确定如何执行此操作或如何将它们全部添加回列表中以及之后的其他字符串.令牌保持有序是很重要的,我不能拥有嵌套列表.
在理想的世界中,e和E不会以相同的方式被识别为字母,因此
'-4e1'
Run Code Online (Sandbox Code Playgroud)
会成为
['-', '4e1']
Run Code Online (Sandbox Code Playgroud)
但
'-4x1'
Run Code Online (Sandbox Code Playgroud)
会成为
['-', '4', 'x', '1']
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
我是 Spacy 和 NLP 的新手。我在使用 Spacy 进行句子分割时面临以下问题。
我试图标记为句子的文本包含编号列表(编号和实际文本之间有空格),如下所示。
import spacy
nlp = spacy.load('en_core_web_sm')
text = "This is first sentence.\nNext is numbered list.\n1. Hello World!\n2. Hello World2!\n3. Hello World!"
text_sentences = nlp(text)
for sentence in text_sentences.sents:
print(sentence.text)
Run Code Online (Sandbox Code Playgroud)
输出(1.,2.,3. 被视为单独的行)是:
This is first sentence.
Next is numbered list.
1.
Hello World!
2.
Hello World2!
3.
Hello World!
Run Code Online (Sandbox Code Playgroud)
但是如果编号和实际文本之间没有空格,那么句子标记化就可以了。像下面这样:
import spacy
nlp = spacy.load('en_core_web_sm')
text = "This is first sentence.\nNext is numbered list.\n1.Hello World!\n2.Hello World2!\n3.Hello World!"
text_sentences = nlp(text)
for sentence in text_sentences.sents: …Run Code Online (Sandbox Code Playgroud)