标签: tokenize

c ++中的字符串标记生成器

你好,我有一个代码

char * cip = "192.168.0.1\t\t78.90.56.4";
Run Code Online (Sandbox Code Playgroud)

我想把它转换成

char * ip1= "192.168.0.1";
char * ip2 = "78.90.56.4";
Run Code Online (Sandbox Code Playgroud)

我已经做好了

 ip1= strtok(cip, "\t\t ");
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得第二个ip

我不知道如何使用字符串标记器来完成此操作.请帮助我谢谢

c++ string tokenize

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

在c中解析char数组

我正在尝试解析ac char数组.这是为了课堂,所以我必须使用c.我在分割令牌时遇到问题

我需要能够接受以下格式的两个不同参数:[1234]或[1234 abcd]

当我解析"[1234 abcd]"时,我没有任何问题.但是,当我尝试解析"[1234]"时,我得到一个"不匹配"的错误.虽然,当我尝试"[1234]"时,我没有任何问题.

谁能告诉我为什么会这样呢?

以下是我的测试代码:

$ ./parsemem
Splitting string "[1234 abcd]" into tokens:
ip1:1234, ip2:abcd
var1:1234, var2:abcd 
Run Code Online (Sandbox Code Playgroud)

parsemem.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//int parse()
int parse(char *str, char *v1, char *v2)
{
 char string[11];
 strcpy(string,str);
 char * pch;
 char ip[1][5];
 int i=0;

 printf ("Splitting string \"%s\" into tokens:\n",string);
 pch = strtok (string," []");
 while (pch != NULL)
 {
   strcpy(ip[i],pch);
   pch = strtok (NULL, " []");
   i++;
 }

 printf("ip1:%d, ip2:%s\n", atoi(ip[0]), ip[1]);
 strcpy(v1,ip[0]);
 strcpy(v2,ip[1]);

 return 0; …
Run Code Online (Sandbox Code Playgroud)

c pointers tokenize

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

常量以c#中的回车符(CR)拆分字符串

我试图将一个字符串拆分为两个数组.

第一个数组在字符串的开头有数据,由\t(tab)字符分割,其余部分在第一个换行符(\n)后面.

我试过这个,认为这就是我想要的:

string[] pqRecords = pqRequests.ToString().Split('\n');
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

internal static readonly string segment = Environment.NewLine + "\t";
string[] pqRecords = pqRequests.ToString().Split(segment);
Run Code Online (Sandbox Code Playgroud)

不幸的是,该Split方法只需要一个字符.

我知道我的pqRequests字符串变量中有vbcr,因为当我将鼠标悬停在它上面并看到文本可视化时,第一行有标签,其他一切都在它自己的行上.

这个数据取自txt文件,在文件中,当在Notepad ++中打开时,我可以看到这些CR字符.

c#中是否有替代常量我应该用于这些CR字符?

c# string tokenize

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

XSLT 2.0 如何标记多个元素的值并将它们关联在一起以形成结果

我刚刚开始研究 XSLT。我的输入和预期输出如下,XSLT 也在下面给出。我现在面临两个问题

  1. 正如您所看到的,我正在动态分配变量名称并引发以下异常 net.sf.saxon.trans.XPathException: Required item type of the context item for the attribute axis is node(); supplied value has item type xs:string
  2. 当我将变量名设置为某个静态字符串时,我没有收到异常,但我没有看到预期的输出,即我想知道如何映射标记化的字符串

输入

<students>
  <field name="id">1,2,3</field>
  <field name="name">a,b,c</field>
 </students>
Run Code Online (Sandbox Code Playgroud)

预期产出

<students>
<student>
    <id>1</id>
    <name>a</name>
</student>
<student>
    <id>2</id>
    <name>b</name>
</student>
<student>
    <id>3</id>
    <name>c</name>
</student>
</students>
Run Code Online (Sandbox Code Playgroud)

XSLT

<xsl:stylesheet version="2.0" 
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/" name="main">

    <xsl:for-each select="students/field">
        <xsl:for-each select="tokenize(.,',')">
            <xsl:element name="{@name}">
                <xsl:value-of select="."/>
            </xsl:element>
        </xsl:for-each>
    </xsl:for-each>                     
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

xml xslt tokenize xslt-2.0

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

解析 postscript 文件

我正在将 PDFMiner(一个用 Python 编写的开源 PDF 到文本程序)翻译成 Objective-c。某些字体中有一个附言文件,其中包含字符名称及其编码值。例如:

/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 65 /A put
dup 67 /C put
dup 70 /F put
dup 45 /hyphen put
Run Code Online (Sandbox Code Playgroud)

我实际上不知道上面的代码做了什么。我猜它会将这些对放入字典中。我完全不知道 dup 做了什么。上面的代码对我来说意味着,如果我在 PDF 中看到 45,那么我会查找它并将其转换为连字符,或者如果我看到 70,则将其转换为 F 等。

我正在复制的代码使用完整的 Postscript 标记器来解析 postscript 文件中的所有放置命令。对于每个 put 命令,它创建一个字典,其中包含与 put 操作数对应的键值对。

我的问题是,我真的需要构建一个完整的 Postscript 标记器来解析这些东西吗?

一个更简单的替代方法是扫描字符串“put”的每个出现,然后查看前面的两个单词。如果前面的两个单词是一个数字后跟一个 /x ,那么我认为这是我想要的,否则忽略它。

我根本不知道附言,但我想任何知道的人都可以告诉我我的更简单的替代方案是否有任何会搞砸的极端情况。

谢谢!

pdf postscript tokenize

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

元组没有属性“ isdigit”

我需要使用NLTK模块进行一些文字处理,然后出现以下错误:AttributeError:'tuple'对象没有属性'isdigit'

有人知道如何处理此错误吗?

Traceback (most recent call last):
  File "preprocessing-edit.py", line 36, in <module>
    postoks = nltk.tag.pos_tag(tok)
NameError: name 'tok' is not defined

PS C:\Users\moham\Desktop\Presentation> python preprocessing-edit.py
Traceback (most recent call last):
  File "preprocessing-edit.py", line 37, in <module>
    postoks = nltk.tag.pos_tag(tok)
  File "c:\python34\lib\site-packages\nltk-3.1-py3.4.egg\nltk\tag\__init__.py", line 111, in pos_tag
    return _pos_tag(tokens, tagset, tagger)
  File "c:\python34\lib\site-packages\nltk-3.1-py3.4.egg\nltk\tag\__init__.py", line 82, in _pos_tag
    tagged_tokens = tagger.tag(tokens)
  File "c:\python34\lib\site-packages\nltk-3.1-py3.4.egg\nltk\tag\perceptron.py", line 153, in tag
    context = self.START + [self.normalize(w) for w in tokens] + self.END
  File "c:\python34\lib\site-packages\nltk-3.1-py3.4.egg\nltk\tag\perceptron.py", line 153, …
Run Code Online (Sandbox Code Playgroud)

python tokenize nltk

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

spaCy:tokenizer_exceptions 的 NORM 部分是什么?

我正在添加tokenizer_exceptions我的语言。我在看'gonna'英语的例子,所以写了如下规则:

'?.?.': [
    {ORTH: "?.", NORM: "????", LEMMA: "???"},
    {ORTH: "?.", NORM: "????????", LEMMA: "????????"}
],
Run Code Online (Sandbox Code Playgroud)

然后当我标记化时,我希望NORM-parts of rule 将在token.norm_(尽管没有任何关于 的文档Token.norm_)。但相反,我看到ORTH-part intoken.norm_并且在token-instance 中没有任何地方我可以看到NORM规则的-part。

那么什么是-member,Token.norm_什么是NORM-rule 的 -parttokenizer_exceptions呢?

python nlp tokenize spacy

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

为什么 gensim 的 simple_preprocess Python 标记器似乎跳过了“i”标记?

list(gensim.utils.simple_preprocess("i you he she I it we you they", deacc=True))
Run Code Online (Sandbox Code Playgroud)

结果如下:

['you', 'he', 'she', 'it', 'we', 'you', 'they']
Run Code Online (Sandbox Code Playgroud)

正常吗?有没有跳过的单词?我应该使用另一个标记器吗?

额外问题:“deacc=True”参数是什么意思?

python nlp tokenize gensim

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

设置 perl 正则表达式搜索从长字符串中的给定位置开始

我想从一个可能很长的输入代码文本中提取一个简单的回溯解析器的标记。我的设置是使用一个整数光标,它保存文本中的下一个阅读位置,最初为 0。然后我想使用substr提取简单的短标记和 perlre 来提取更复杂的标记。因此,后续正则表达式搜索之间的光标位置可能会向前跳跃(在成功的令牌子字符串匹配之后)或向后跳跃(回溯时)。

我的问题是:如何有效地限制 perlregex 搜索的起始位置,以便它仅从该位置搜索匹配的标记。

例如,我想在示例文本中获取十进制数字标记

my $text = 'long text with 2 numbers 3928 in it';
Run Code Online (Sandbox Code Playgroud)

并且当前光标位置是 25。我目前对这个问题的智慧要么是生成一个(可能效率低下的)子字符串

my $tail = substr $text, 25;
printf "%s\n",
    $tail =~ /^\d+/
    ? "match: $&"
    : "miss";
Run Code Online (Sandbox Code Playgroud)

\G通过(可能效率低下的)额外模式匹配来操作修饰符(注意这里25必须是真实标记器中的变量)

$text =~ /.{25}/gcm;
printf "%s\n",
    $text =~ /\G\d+/
    ? "match: $&"
    : "miss";
Run Code Online (Sandbox Code Playgroud)

后一种选择具有额外的外观弱点,即它可能不是线程安全的。这在我现在正在做的事情中没有问题,但我也在我的问题中为那些可能使用多线程的人强调了这个问题。

regex perl performance tokenize

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

如何构建一个简单的分词器

我想知道如何构建一个非常简单的标记器。给定字典 d(在本例中为列表)和句子 s,我想返回该句子的所有可能标记(=单词)。这是我尝试过的:

l = ["the","snow","ball","snowball","is","cold"]
sentence = "thesnowballisverycold"

def subs(string, ret=['']):
    if len(string) == 0:
        return ret
    head, tail = string[0], string[1:]
    ret = ret + list(map(lambda x: x+head, ret))
    return subs(tail, ret)
    
print((list(set(subs(sentence))&set(l))))
Run Code Online (Sandbox Code Playgroud)

但这会返回:

["snow","ball","cold","is","snowball","the"]
Run Code Online (Sandbox Code Playgroud)

我可以比较子字符串,但必须有更好的方法来做到这一点,对吗?我想要的是:

["the","snowball","is","cold"]
Run Code Online (Sandbox Code Playgroud)

python substring tokenize

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

标签 统计

tokenize ×10

python ×4

nlp ×2

string ×2

c ×1

c# ×1

c++ ×1

gensim ×1

nltk ×1

pdf ×1

performance ×1

perl ×1

pointers ×1

postscript ×1

regex ×1

spacy ×1

substring ×1

xml ×1

xslt ×1

xslt-2.0 ×1