标签: tokenize

sqlite-fts3:自定义标记生成器?

这里有没有人有编写自定义FTS3(全文搜索扩展名)标记符的经验?我正在寻找一个会忽略HTML标签的标记器.

谢谢.

html sqlite full-text-search tokenize

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

在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
查看次数

使用正则表达式为词法分析器标记字符串是不是一个坏主意?

我不确定如何为词法分析器标记源代码.现在,我只能想到使用正则表达式将字符串解析为具有给定规则的数组(标识符,符号,如+, - 等).

例如,

begin x:=1;y:=2;
Run Code Online (Sandbox Code Playgroud)

然后我想标记单词,变量(在这种情况下为x,y)和每个符号(:,=,;).

regex tokenize lexer

7
推荐指数
2
解决办法
3888
查看次数

String.Split方法在传递多个多字符分隔符时如何确定分隔符优先级?

如果你有这个代码:

"......".Split(new String[]{"...", ".."}, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

生成的数组元素是:

 1. ""
 2. ""
 3. ""
Run Code Online (Sandbox Code Playgroud)

现在,如果你颠倒了分隔符的顺序,

"......".Split(new String[]{"..", "..."}, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

生成的数组元素是:

 1. ""
 2. ""
 3. ""
 4. ""
Run Code Online (Sandbox Code Playgroud)

从这两个例子中,我倾向于得出结论,当从左到右遍历数组的每个元素时,Split方法递归地标记化.

但是,一旦我们将包含字母数字字符的分隔符放入等式中,很明显上述理论是错误的.

  "5.x.7".Split(new String[]{".x", "x."}, StringSplitOptions.None)
Run Code Online (Sandbox Code Playgroud)

结果是: 1. "5" 2. ".7"

   "5.x.7".Split(new String[]{"x.", ".x"}, StringSplitOptions.None)
Run Code Online (Sandbox Code Playgroud)

结果是: 1. "5" 2. ".7"

这次我们获得相同的输出,这意味着基于第一组示例理论化的规则不再适用.(即:如果始终根据数组中分隔符的位置确定分隔符优先级,那么在最后一个示例中,我们将获得"5."&"7"而不是"5"&".7".

至于为什么我浪费时间去猜测.NET标准API是如何工作的,这是因为我想为我的java应用程序实现类似的功能,但是StringTokenizer和org.apache.commons.lang.StringUtils都没有提供拆分的能力.使用多个多字符分隔符的字符串(即使我要找到提供此功能的API,也很难知道它是否始终使用String.Split方法使用的相同算法进行标记.

c# string tokenize stringtokenizer

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

如何在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
查看次数

如何标记没有空白分隔符的连续单词?

我正在使用Python和nltk.我需要用英语处理一些没有任何空格的文本,但nltk中的word_tokenize函数无法处理这样的问题.那么如何在没有任何空格的情况下标记文本.Python中有任何工具吗?

python tokenize nltk

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

在not_analyzed字段上进行Elasticsearch通配符搜索

我有一个索引,如下面的设置和映射;

{
  "settings":{
     "index":{
        "analysis":{
           "analyzer":{
              "analyzer_keyword":{
                 "tokenizer":"keyword",
                 "filter":"lowercase"
              }
           }
        }
     }
  },
  "mappings":{
     "product":{
        "properties":{
           "name":{
              "analyzer":"analyzer_keyword",
              "type":"string",
              "index": "not_analyzed"
           }
        }
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在努力为name字段上的通配符搜索实现.我的示例数据是这样的;

[
{"name": "SVF-123"},
{"name": "SVF-234"}
]
Run Code Online (Sandbox Code Playgroud)

当我执行以下查询时;

http://localhost:9200/my_index/product/_search -d '
{
    "query": {
        "filtered" : {
            "query" : {
                "query_string" : {
                    "query": "*SVF-1*"
                }
            }
        }

    }
}'
Run Code Online (Sandbox Code Playgroud)

它返回SVF-123,SVF-234.我认为,它仍然是数据的标记.它必须只返回SVF-123.

你能帮忙吗?

提前致谢

lucene search tokenize elasticsearch

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

使用Keras Tokenizer生成n-gram

可以在Keras中使用n-gram吗?

例如,句子在X_train数据帧中包含"句子"列.

我以下列方式使用Keras的tokenizer:

tokenizer = Tokenizer(lower=True, split=' ')
tokenizer.fit_on_texts(X_train.sentences)
X_train_tokenized = tokenizer.texts_to_sequences(X_train.sentences)
Run Code Online (Sandbox Code Playgroud)

然后我填写句子:

X_train_sequence = sequence.pad_sequences(X_train_tokenized)
Run Code Online (Sandbox Code Playgroud)

我还使用一个简单的LSTM网络:

model = Sequential()
model.add(Embedding(MAX_FEATURES, 128))
model.add(LSTM(32, dropout=0.2, recurrent_dropout=0.2,
               activation='tanh', return_sequences=True))
model.add(LSTM(64, dropout=0.2, recurrent_dropout=0.2, activation='tanh'))
model.add(Dense(number_classes, activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop',
              metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

在这种情况下,tokenizer执行.在Keras docs:https://keras.io/preprocessing/text/ 我看到字符处理是可能的,但这不适合我的情况.

我的主要问题:我可以将n-gram用于NLP任务(不仅仅是情感分析,而是任何NLP任务)

澄清一下:我不仅要考虑单词而且要考虑单词组合.我想尝试看看它是否有助于模拟我的任务.

text-processing nlp tokenize n-gram keras

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

spacy是否将令牌列表作为输入?

我想使用spacy的POS标记,NER和依赖项解析,而不使用单词标记化。确实,我的输入是表示一个句子的标记列表,并且我想尊重用户的标记化。使用spacy或任何其他NLP软件包,这是否完全可能?

现在,我正在使用基于spacy的函数以Conll格式放置一个句子(一个unicode字符串):

import spacy
nlp = spacy.load('en')
def toConll(string_doc, nlp):
   doc = nlp(string_doc)
   block = []
   for i, word in enumerate(doc):
          if word.head == word:
                  head_idx = 0
          else:
                  head_idx = word.head.i - doc[0].i + 1
          head_idx = str(head_idx)
          line = [str(i+1), str(word), word.lemma_, word.tag_,
                      word.ent_type_, head_idx, word.dep_]
          block.append(line)
   return block
conll_format = toConll(u"Donald Trump is the new president of the United States of America")

Output:
[['1', 'Donald', u'donald', u'NNP', u'PERSON', '2', u'compound'],
 ['2', 'Trump', u'trump', u'NNP', u'PERSON', '3', u'nsubj'], …
Run Code Online (Sandbox Code Playgroud)

tokenize python-2.7 spacy dependency-parsing

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