标签: tokenize

正则表达式可以实现吗?

我试图通过以下方式将字符串拆分为标记(通过正则表达式):

示例#1
输入字符串:'hello'
第一个令牌:'
第二个令牌:hello
第三个令牌:'

示例#2
输入字符串:'hello world'
第一个令牌:'
第二个令牌:hello world
第三个令牌:'

示例#3
输入字符串:hello world
第一个令牌:hello
第二个令牌:world

即,如果字符串不是单引号,则只拆分字符串,并且单引号应该在它们自己的标记中.

这是我到目前为止:

string pattern = @"'|\s";
Regex RE = new Regex(pattern);
string[] tokens = RE.Split("'hello world'");
Run Code Online (Sandbox Code Playgroud)

这将适用于例如#1和示例#3,但它不适用于示例#2.我想知道理论上是否有办法用正则表达式实现我想要的东西

c# regex tokenize

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

从给定的Boost token_iterator中识别原始字符串中的位置

如果使用Boost标记生成器处理了字符串,则可以获取给定标记迭代器指向的原始字符串中的位置:

boost:tokenizer<> tok( "this is the original string" );
for(tokenizer<>::iterator it=tok.begin(); it!=tok.end();++it)
{
    std::string strToken = *it;
    int charPos = it.?                /* IS THERE A METHOD? */
}
Run Code Online (Sandbox Code Playgroud)

我意识到我可以使用已定义的'keep delimiters'列表创建一个特定的char_separator并指定keep_empty_tokens来尝试跟踪迭代器的进度,但我希望有一种更简单的方法只使用迭代器本身.

c++ boost stl tokenize

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

有人可以简单解释一下自然语言处理的要素吗?

我是自然语言处理的新手,我对使用的术语感到困惑.

什么是标记化?POS标签?实体识别?

标记化只是将文本分成可能具有含义或赋予这些部分含义的部分?意思是什么,当我确定某事物是名词,动词还是反对时,这个名字是什么.如果我想分成日期,名字,货币?

我需要一个关于NLP中使用的区域/术语的简单解释.

nlp tokenize

3
推荐指数
2
解决办法
483
查看次数

java分裂字符串

在Java中,如果我有一个这种格式的字符串:

( string1 , string2 ) ( string2 ) ( string4 , string5 , string6 ) [s2]
Run Code Online (Sandbox Code Playgroud)

如何拆分字符串以获取字符串数组?

string1 , string2
string2
string4 , string5 , string6
Run Code Online (Sandbox Code Playgroud)

java regex string split tokenize

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

在iOS上选择MeCab Japanese tokenizer?

我在https://github.com/FLCLjp/iPhone-libmecab上找到了用于MeCab的iPhone库.我无法将其标记为所有可能的单词.具体来说,我不能将"吉本兴业"分为两部分"吉本"和"兴业".我可以使用任何选项来解决这个问题吗?iPhone库没有暴露任何东西,但它在objective-c包装器下使用C++.我假设必须有某种设置我可以更改以提供更细粒度的控制,但我不知道从哪里开始.

顺便说一句,如果有人想要标记这可能是合适的'mecab'.我还不允许创建新标签.

更新:iOS库调用libmecab.cpp中定义的mecab_sparse_tonode2().如果有人能指出我在该文件上的一些英文文档,那就足够了.

tokenize cjk ios mecab

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

用于复杂数学表达式的高级标记生成器

我想标记一个由整数,浮点数,运算符,函数,变量和括号组成的字符串.以下示例应该提亮问题的本质:

当前状态:

String infix = 4*x+5.2024*(Log(x,y)^z)-300.12
Run Code Online (Sandbox Code Playgroud)

期望的状态:

 String tokBuf[0]=4 
 String tokBuf[1]=* 
 String tokBuf[2]=x 
 String tokBuf[3]=+ 
 String tokBuf[4]=5.2024 
 String tokBuf[5]=* 
 String tokBuf[6]=( 
 String tokBuf[7]=Log
 String tokBuf[8]=( 
 String tokBuf[9]=x
 String tokBuf[10]=, 
 String tokBuf[11]=y 
 String tokBuf[12]=) 
 String tokBuf[13]=^ 
 String tokBuf[14]=z 
 String tokBuf[15]=) 
 String tokBuf[16]=- 
 String tokBuf[17]=300.12
Run Code Online (Sandbox Code Playgroud)

所有提示和解决方案将不胜感激.

java string tokenize

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

使用空格分隔值标记字符串,除非值用单引号括起来

任何机构都可以告诉我在java脚本中拆分一个字符串,该空格不在单引号内.

就像字符串一样

"0 60 120 180 'node name' 2 34 45 12"

然后它将这样标记化

arr[0]=0
arr[1]=60
arr[2]=120
arr[3]=180
arr[4]='node name'
arr[5]=2
arr[6]=34
arr[7]=45
arr[8]=12

在拆分期间,如果单引号删除,那么也很好,因为这是图表中的图例名称,我必须在单个元素中获取该名称

javascript string split tokenize

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

Elasticsearch"pattern_replace",在分析时替换空格

基本上我想删除所有空格并将整个字符串标记为单个标记.(稍后我将使用nGram.)

这是我的索引设置:

"settings": {
 "index": {
  "analysis": {
    "filter": {
      "whitespace_remove": {
        "type": "pattern_replace",
        "pattern": " ",
        "replacement": ""
      }
    },
    "analyzer": {
      "meliuz_analyzer": {
        "filter": [
          "lowercase",
          "whitespace_remove"
        ],
        "type": "custom",
        "tokenizer": "standard"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

相反的"pattern": " ",我试过"pattern": "\\u0020"\\s,太.

但是,当我分析文本"beleza na web"时,它仍会创建三个单独的标记:"beleza","na"和"web",而不是一个单独的"belezanaweb".

whitespace tokenize removing-whitespace elasticsearch

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

为什么stant :: string在用户输入中占用空格?

直接问题:

这段代码,

#include <iostream>
using namespace std;

int main() {
    std::string string = "9 9";
    std::cout << string;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

9 9作为输出返回.

但是,在输入9 9此代码时,

#include <iostream>
using namespace std;

int main() {
    std::string string;
    std::cin >> string;
    std::cout << string;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它输出9.为什么会这样?

我想这与空间有关,但有什么办法可以避免这种情况吗?我必须说空间是数字之间唯一有效的分离.

c++ string spaces tokenize

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

Rust编译器如何在泛型中标记'&gt;'和'&gt;&gt;'?

我已经编写了许多简单的标记器和递归下降解析器,因此我熟悉它们如何工作的基本概念。但是当我偶然发现以下Rust代码时,我感到很惊讶:

Option<Option<i32>>
Run Code Online (Sandbox Code Playgroud)

我们知道Rust具有>>移位运算符,因此我认为天真的令牌生成器会>>在此处输出令牌,解析器将其视为错误(因为它期望使用两个>令牌)。

但显然Rust编译器了解情况并正确处理。这里发生了什么?

  • 分词器是否保持某种状态,以某种方式知道需要关闭尖括号?
  • 解析器是否检查>>并将其分成两个令牌,然后将其推回到令牌流中?
  • 还是完全其他?

parsing compilation lexical-analysis tokenize rust

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