标签: tokenize

C++ Boost:Split String

如何使用正则表达式将带有Boost的字符串拆分并在结果列表中包含分隔符?

例如,如果我有字符串"1d2"而我的正则表达式是"[az]"我希望结果在带有(1,d,2)的向量中

我有:

std::string expression = "1d2";
boost::regex re("[a-z]");
boost::sregex_token_iterator i (expression.begin (),
                                expression.end (), 
                                re);
boost::sregex_token_iterator j;
std::vector <std::string> splitResults;
std::copy (i, j, std::back_inserter (splitResults)); 
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ regex string boost tokenize

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

Tokenize引用字符串

我试图标记字符串.只要没有引用字符一切都很好:

string:tokens ("abc def ghi", " ").
["abc","def","ghi"]
Run Code Online (Sandbox Code Playgroud)

但字符串:tokens/2确实对引用字符串有很大帮助.它的行为符合预期:

string:tokens ("abc \"def xyz\" ghi", " ").
["abc","\"def","xyz\"","ghi"]
Run Code Online (Sandbox Code Playgroud)

我需要的是一个函数,它将字符串标记化,分隔符和引号字符.就像是:

tokens ("abc \"def xyz\" ghi", " ", "\"").
["abc","def xyz","ghi"]
Run Code Online (Sandbox Code Playgroud)

在我开始重新发明轮子之前,我的问题是:

标准库中是否有这样的功能或类似功能?

编辑:

好吧,我编写了自己的实现,但我仍然对原始问题的答案非常感兴趣.到目前为止,这里是我的代码:

tokens (String) -> tokens (String, [], [] ).

tokens ( [], Tokens, Buffer) ->
    lists:map (fun (Token) -> string:strip (Token, both, $") end, Tokens ++ [Buffer] );

tokens ( [Character | String], Tokens, Buffer) ->
    case {Character, Buffer} of
        {$ , [] } -> tokens (String, Tokens, …
Run Code Online (Sandbox Code Playgroud)

erlang tokenize

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

在Java中将CSV转换为Set <String>

我在Java中有一个逗号分隔的值字符串:

String s = "a,b,c,d";
Run Code Online (Sandbox Code Playgroud)

我需要对它进行标记(用逗号作为分隔符)并将其转换为Set<String>.是StringTokenizer我最好的选择还是有更高效的方式?

java tokenize

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

在Python中从另一个列表中排除一个列表中的项目的有效方法

我有一个包含8000个字符串(stop_words)的列表,以及一个包含各种长度的100,000个字符串的列表,其中包含数百万个单词.我正在使用该函数来标记100,000个字符串,并从列表stop_words中排除非字母数字标记和标记.

    def tokenizer(text):

       return [stemmer.stem(tok.lower()) for tok in nltk.word_tokenize(text)/ 
       if tok.isalpha() and tok.lower() not in stop_words]
Run Code Online (Sandbox Code Playgroud)

我已经使用600个字符串测试了这段代码,需要60秒.如果我删除条件以排除停用词,则在相同的600个字符串上需要1秒钟

    def tokenizer(text):

       return [stemmer.stem(tok.lower()) for tok in nltk.word_tokenize(text)/ 
       if tok.isalpha()]
Run Code Online (Sandbox Code Playgroud)

我希望有一种更有效的方法可以从另一个列表中排除一个列表中的项目.

我很感激任何帮助或建议

谢谢

python string list tokenize stop-words

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

带有split_on_numerics的word_delimiter将删除所有标记

分析时alpha 1a beta,我想要令牌的结果[alpha 1 a beta].为什么myAnalyzer不做这个伎俩?

POST myindex
{
  "settings" : {
    "analysis" : {
      "analyzer" : {
        "myAnalyzer" : {
          "type" : "custom",
          "tokenizer" : "standard",
          "filter" : [ "split_on_numerics" ]
        }
      },
      "filter" : {
        "split_on_numerics" : {
          "type" : "word_delimiter",
          "split_on_numerics" : true,
          "split_on_case_change" : false,
          "generate_word_parts" : false,
          "generate_number_parts" : false,
          "catenate_all" : false
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我跑的时候

GET /myindex/_analyze?analyzer=myAnalyzer&text=alpha 1a beta
Run Code Online (Sandbox Code Playgroud)

没有令牌返回.再次,为什么?

tokenize elasticsearch

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

NGramFilterFactory和EdgeNGramFilterFactory之间的区别

我是索尔的初学者.在我的项目,NGramFilterFactory并且EdgeNGramFilterFactory,两者都被用于一个字段.我对文档的理解EdgeNGramFilterFactory是用于"开始于"查询,而NGramFilterFactory适用于"包含"查询.

我索引两者的组合小的数据集(在其中我只用NGramFilterFactory并且在另一个我用既NGramFilterFactoryEdgeNGramFilterFactory),但我没有看到在输出任何差异.

如果我的理解是正确的,那么在某种程度上EdgeNGramFilterFactory是一个子集NGramFilterFactory.如果这是真的那么在同一个领域使用两种类型的过滤器有什么好处?

solr search-engine tokenize n-gram filterfactory

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

使用Counter创建字典

我有一个单词的输出,我想用它来创建一个字典,其中keys = word; value =单词的频率

这是代码:

import pandas as pd
import numpy as np
import datetime
import sys
import codecs
import re
import urllib, urllib2

import nltk  # Natural Language Processing

from nltk.corpus import stopwords # list of words
import string  # list(string.punctuation) - produces a list of punctuations
from collections import Counter  # optimized way to do this

#wordToken = ['happy', 'thursday', 'from', 'my', 'big', 'sweater', 'and', 'this', 'ART', '@', 'East', 'Village', ',', 'Manhattan', 'https', ':', '//t.co/5k8PUInmqK', 'RT', '@', …
Run Code Online (Sandbox Code Playgroud)

python counter dictionary tokenize

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

NLTK标记器和斯坦福corenlp标记器不能区分句子中没有空格的2个句子(.)

我的数据集中有两个句子:

w1 =我是Pusheen的猫.我太可爱了.#句号后没有空格
w2 =我是Pusheen的猫.我很可爱.#期后的空间

当我使用NKTL tokenizer(word和sent)时,nltk无法区分cat.I.

这是单词标记化

>>> nltk.word_tokenize(w1, 'english')
['I', 'am', 'Pusheen', 'the', 'cat.I', 'am', 'so', 'cute']
>>> nltk.word_tokenize(w2, 'english')
['I', 'am', 'Pusheen', 'the', 'cat', '.', 'I', 'am', 'so', 'cute']
Run Code Online (Sandbox Code Playgroud)

并发送了tokenize

>>> nltk.sent_tokenize(w1, 'english')
['I am Pusheen the cat.I am so cute']
>>> nltk.sent_tokenize(w2, 'english')
['I am Pusheen the cat.', 'I am so cute']
Run Code Online (Sandbox Code Playgroud)

我想问一下如何解决这个问题?即:在我的数据集中将nlkt检测为w2,有时单词和标点符号会粘在一起.

更新:尝试过Stanford CoreNLP 3.7.0,他们也无法区分'cat.I'为'cat','.','I'

meow@meow-server:~/projects/stanfordcorenlp$ java edu.stanford.nlp.process.PTBTokenizer sample.txt
I
am
Pusheen
the
cat.I
am
so
cute
.
PTBTokenizer tokenized 9 tokens at 111.21 tokens …
Run Code Online (Sandbox Code Playgroud)

python nlp tokenize nltk stanford-nlp

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

如何改善NLTK的句子分割?

我有来自维基百科的这段文字:

神父提出了一项雄心勃勃的校园扩建计划。弗农·加拉格尔(Vernon F. Gallagher),1952年成立。首个学生宿舍假设大厅于1954年开放,罗克韦尔大厅(Rockwell Hall)于1958年11月投入使用,设有商学院和法学院。正是在F. Henry J. McAnulty任职期间。加拉格尔的雄心勃勃的计划付诸行动。

我正在使用NLTK nltk.sent_tokenize来获取句子。返回:

['An ambitious campus expansion plan was proposed by Fr.', 
'Vernon F. Gallagher in 1952.', 
'Assumption Hall, the first student dormitory, was opened in 1954, and Rockwell Hall was dedicated in November 1958, housing the schools of business and law.', 
'It was during the tenure of Fr.', 
'Henry J. McAnulty that Fr. Gallagher's ambitious plans were put to action.'
 ] 
Run Code Online (Sandbox Code Playgroud)

虽然NTLK可以处理F.亨利·J·麦卡纳尔蒂作为一个实体,它失败神父 弗农F.加拉格尔。这把句子分成两部分。

正确的令牌化应为:

[
'An ambitious …
Run Code Online (Sandbox Code Playgroud)

python nlp tokenize nltk text-segmentation

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

具有两个输出令牌的Elasticsearch自定义分析器

要求是创建一个自定义分析器,该分析器可以生成两个令牌,如以下方案所示。

例如

Input -> B.tech in
Output Tokens ->
- btechin
- b.tech in
Run Code Online (Sandbox Code Playgroud)

我可以删除非字母数字字符,但如何在输出令牌列表中也保留原始字符。以下是我创建的自定义分析器。

       "alphanumericStringAnalyzer": {
            "filter": [
                "lowercase",
                "minLength_filter"],
            "char_filter": [
                "specialCharactersFilter"
            ],
            "type": "custom",
            "tokenizer": "keyword"
        }

      "char_filter": {
        "specialCharactersFilter": {
            "pattern": "[^A-Za-z0-9]",
            "type": "pattern_replace",
            "replacement": ""
        }
      },
Run Code Online (Sandbox Code Playgroud)

该分析器正在为输入“ B.tech in”生成单个令牌“ btechin”,但我也希望令牌列表“ B.tech in”中也有原始令牌。

谢谢!

tokenize analyzer elasticsearch elasticsearch-6

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