标签: tokenize

在Solr中索引和查询URLS

我有一个我想要搜索的URL数据库.因为URL并不总是写成相同的(可能有也可能没有www),我正在寻找索引和查询URL的正确方法.我尝试了一些东西,我认为我很接近但不确定为什么它不起作用:

这是我的自定义字段类型:

 <fieldType name="customUrlType" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)

例如:

http://www.twitter.com/AndersonCooper 在编入索引时,将在不同的位置有以下单词:http,www,twitter,com,andersoncooper

如果我只搜索twitter.com/andersoncooper,我希望这个查询匹配索引的记录,这就是为什么我也使用WDF来分割搜索查询,但搜索查询最终是这样的:

myfield :("twitter com andersoncooper")真的希望它匹配所有包含以下所有单词的记录:twitter com andersoncooper

我应该使用不同的查询过滤器或标记器吗?

indexing url solr querying tokenize

7
推荐指数
1
解决办法
6482
查看次数

Lucene标准分析仪分期

如何使Lucene的标准分析器在'.'上进行标记化.炭?例如,在查询"B"时,我需要它返回"ABC"中的B作为结果.我需要按标准分析仪处理它的方式处理数字,因此Simple分析器是不够的.如果我可以指定标准分析器来标记''',那将是完美的.char也是.如果我不得不用这个小扩展编写我自己的标记器,我该怎么办?谢谢,Nacha

lucene tokenize

7
推荐指数
1
解决办法
2920
查看次数

如何在PHP中构建一个tokenizer?

我正在建立一个学习基本编程的网站,我将使用伪语言,用户可以在其中提交代码,我需要解释它.但是我不确定如何在PHP中构建一个tokenizer.

有一个像这样的片段:

a = 1
b = 2
c = a - b

if(a > b) {
    buy(a)
    } else {
    buy(b)
    }
Run Code Online (Sandbox Code Playgroud)

我该如何将这些代码分成令牌?

-

这就是我现在正在尝试的事情:

$tokens = array();

// First token (define string)
$token  = strtok($botCode, '=');
$tokens[] = $token;

// Loop
while($token) {
    $token  = strtok('=');
    $tokens[] = $token;
}
Run Code Online (Sandbox Code Playgroud)

然而,我还没有弄清楚如何使用strtok与常规表达式列表...我可以做类似于strtok但是接受数组作为带有substr和strrpos的针但是在我看来它应该是可能的用strtok做的,因为它专为此而设计.任何信息或指向正确的方向将不胜感激

php tokenize

7
推荐指数
1
解决办法
1516
查看次数

如何在Pandas数据帧上为Twitter数据应用NLTK word_tokenize库?

这是我用于twitter的语义分析的代码: -

import pandas as pd
import datetime
import numpy as np
import re
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem.wordnet import WordNetLemmatizer
from nltk.stem.porter import PorterStemmer

df=pd.read_csv('twitDB.csv',header=None, 
sep=',',error_bad_lines=False,encoding='utf-8')

hula=df[[0,1,2,3]]
hula=hula.fillna(0)
hula['tweet'] = hula[0].astype(str) 
+hula[1].astype(str)+hula[2].astype(str)+hula[3].astype(str) 
hula["tweet"]=hula.tweet.str.lower()

ho=hula["tweet"]
ho = ho.replace('\s+', ' ', regex=True) 
ho=ho.replace('\.+', '.', regex=True)
special_char_list = [':', ';', '?', '}', ')', '{', '(']
for special_char in special_char_list:
ho=ho.replace(special_char, '')
print(ho)

ho = ho.replace('((www\.[\s]+)|(https?://[^\s]+))','URL',regex=True)
ho =ho.replace(r'#([^\s]+)', r'\1', regex=True)
ho =ho.replace('\'"',regex=True)

lem = WordNetLemmatizer()
stem = PorterStemmer() …
Run Code Online (Sandbox Code Playgroud)

python twitter tokenize nltk pandas

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

解析/标记包含SQL命令的字符串

是否有任何开源库(任何语言,python/PHP首选)将ANSI SQL字符串标记/解析为其各种组件?

也就是说,如果我有以下字符串

 SELECT a.foo, b.baz, a.bar
 FROM TABLE_A a
 LEFT JOIN TABLE_B b
 ON a.id = b.id
 WHERE baz = 'snafu';
Run Code Online (Sandbox Code Playgroud)

我会找回类似的数据结构/对象

 //fake PHPish 
 $results['select-columns']  = Array[a.foo,b.baz,a.bar];
 $results['tables']    = Array[TABLE_A,TABLE_B];
 $results['table-aliases'] = Array[a=>TABLE_A, b=>TABLE_B];
 //etc...
Run Code Online (Sandbox Code Playgroud)

重申一下,我正在寻找数据库包中的代码,它将SQL命令分开,以便引擎知道如何处理它.搜索互联网会产生很多关于如何使用SQL解析字符串的结果.那不是我想要的.

我意识到我可以浏览一个开源数据库的代码来找到我想要的东西,但我希望能做一些更准备好的东西,(虽然如果你知道在MySQL,PostgreSQL,SQLite源代码的哪个地方,请随意通过它一起)

谢谢!

php python sql parsing tokenize

6
推荐指数
1
解决办法
1220
查看次数

如何标记中文文档

我将收到用中文编写的文档,我必须对其进行标记并将其保存在数据库表中。我正在尝试 Lucene 的 CJKBigramFilter,但它所做的只是将 2 个字符联合在一起,其含义与文档中的含义不同。假设这是文件“Hello My name is Pradeep”中的一行,在中文传统中是“\xe4\xbd\xa0\xe5\xa5\xbd\xe6\x88\x91\xe7\x9a\x84\xe5\x90\ x8d\xe5\xad\x97\xe6\x98\xaf\xe6\x99\xae\xe6\x8b\x89\xe8\xbf\xaa\xe6\x99\xae”。当我对其进行标记时,它会转换为下面的 2 个字母单词。\n\xe4\xbd\xa0\xe5\xa5\xbd - Hello\n\xe5\x90\x8d\xe5\xad\x97 - 名称\n\ xe5\xa5\xbd\xe6\x88\x91 - 嗯,我\n\xe5\xad\x97\xe6\x98\xaf - 字是\n\xe6\x88\x91\xe7\x9a\x84 - 我的\n\ xe6\x8b\x89\xe8\xbf\xaa - Radi\n\xe6\x98\xaf\xe6\x99\xae - 是 S & P\n\xe6\x99\xae\xe6\x8b\x89 - 普拉\ n\xe7\x9a\x84\xe5\x90\x8d - 以\n\xe8\xbf\xaa\xe6\x99\xae 的名义 - Dipp。\n我想要的只是将其转换为相同的英文翻译。\nI我正在为此使用 Lucene...如果您有任何其他有利的 opne 源,请指示我。\n提前致谢

\n

java tokenize

6
推荐指数
1
解决办法
5429
查看次数

有没有办法使用 Pygments (或其他库)突出显示函数调用?

我非常失望地发现使用Pygments没有突出显示函数调用。

Pygments 语法高亮

在线查看(我用所有可用的样式测试了它)

内置函数被突出显示,但不是我的。

我查看了标记列表,但没有引用例如“函数调用”或“对象属性”。

我考虑过通过添加正则表达式规则来扩展词法分析器,例如\w+\(.*?\). 但我担心由于我没有想到的边缘情况而导致错误增加。

你知道为什么这个功能不直接在 Pygments 内部实现吗?

python syntax-highlighting tokenize lexer pygments

6
推荐指数
1
解决办法
386
查看次数

将 pandas 数据框列传递给 NLTK 分词器

我有一个 pandas 数据框 raw_df,有 2 列、ID 和句子。我需要将每个句子转换为字符串。下面的代码不会产生错误,并表示规则的数据类型是“对象”。

raw_df['sentences'] = raw_df.sentences.astype(str)
raw.df.sentences.dtypes
Run Code Online (Sandbox Code Playgroud)

输出:dtype('O')

然后,我尝试对句子进行标记并得到一个 TypeError ,该错误表明该方法需要一个字符串或类似字节的对象。我究竟做错了什么?

raw_sentences=tokenizer.tokenize(raw_df)
Run Code Online (Sandbox Code Playgroud)

相同类型错误

raw_sentences = nltk.word_tokenize(raw_df)
Run Code Online (Sandbox Code Playgroud)

python string tokenize nltk pandas

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

使用encode_plus方法时令牌索引序列长度错误

在尝试使用encode_plusTransformers 库中提供的方法为 BERT 编码问答对时,我遇到了一个奇怪的错误。

我正在使用来自这个 Kaggle 比赛的数据。给定问题标题、问题正文和答案,模型必须预测 30 个值(回归问题)。我的目标是将以下编码作为 BERT 的输入:

[CLS] question_title question_body [SEP] 回答 [SEP]

但是,当我尝试使用

tokenizer = transformers.BertTokenizer.from_pretrained("bert-base-uncased")
Run Code Online (Sandbox Code Playgroud)

并仅对来自 train.csv 的第二个输入进行编码,如下所示:

inputs = tokenizer.encode_plus(
            df_train["question_title"].values[1] + " " + df_train["question_body"].values[1], # first sequence to be encoded
            df_train["answer"].values[1], # second sequence to be encoded
            add_special_tokens=True, # [CLS] and 2x [SEP] 
            max_len = 512,
            pad_to_max_length=True
            )
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Token indices sequence length is longer than the specified maximum sequence length for this model (46 > 512). …
Run Code Online (Sandbox Code Playgroud)

nlp tokenize bert-language-model huggingface-transformers

6
推荐指数
1
解决办法
3801
查看次数

如何取消 BERT 代币的代币化?

我有一个句子,我需要返回特定单词左右两侧 N 个 BERT 标记对应的文本。

from transformers import BertTokenizer
tz = BertTokenizer.from_pretrained("bert-base-cased")
sentence = "The Natural Science Museum of Madrid shows the RECONSTRUCTION of a dinosaur"

tokens = tz.tokenize(sentence)
print(tokens)

>>['The', 'Natural', 'Science', 'Museum', 'of', 'Madrid', 'shows', 'the', 'R', '##EC', '##ON', '##ST', '##R', '##UC', '##TI', '##ON', 'of', 'a', 'dinosaur']
Run Code Online (Sandbox Code Playgroud)

我想要的是获取与令牌马德里左侧和右侧的4个令牌相对应的文本。所以我想要标记: ['Natural', 'Science', 'Museum', 'of', 'Madrid', 'shows', 'the', 'R', '##EC'] 然后将它们转换为原文。在本例中,它将是“马德里自然科学博物馆展示 REC”。

有没有办法做到这一点?

python tokenize bert-language-model huggingface-transformers huggingface-tokenizers

6
推荐指数
2
解决办法
8329
查看次数