【问题标题】:tokenltk word_tokenize() tokenizes the same word two different ways in different functionstokenltk word_tokenize() 在不同的函数中以两种不同的方式对同一个词进行标记
【发布时间】:2018-05-20 05:10:51
【问题描述】:

我有一个网球运动员的名字,显然它没有被 pandas 正确解析。它是“radwa?ska”。我有两个函数,我使用word_tokenize() 函数进行标记。 它在两个不同的函数中以两种不同的方式对句子进行标记。如何让第二个走第一个方向
['radwa?ska']
['radwa','?','ska']
这是两个函数中的代码。
第一个函数:
word_tokenize(keyword)关键字是'martina hingis, nadia petrova, agnieszka radwa?ska'
在第二个函数中是:
word_tokenize(content[j]) where content[j] is 'agnieszka radwa?ska'
.

【问题讨论】:

    标签: python encoding utf-8 tokenize python-unicode


    【解决方案1】:

    对于您原始帖子中的两个句子,它们应该返回相同的输出:

    >>> from nltk import word_tokenize
    >>> text1 = 'martina hingis, nadia petrova, agnieszka radwa?ska'
    >>> text2 = 'agnieszka radwa?ska'
    
    >>> word_tokenize(text1)
    ['martina', 'hingis', ',', 'nadia', 'petrova', ',', 'agnieszka', 'radwa', '?', 'ska']
    
    >>> word_tokenize(text2)
    ['agnieszka', 'radwa', '?', 'ska']
    

    这是因为word_tokenize后面的TreebankWordTokenizer对象总是在https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L80的问号前后放置一个空格


    可以破解一些方法来禁用该正则表达式,但它会在其他地方引起问题。

    但我敦促您仔细查看您是如何读取/收集数据的,radwa?ska 似乎暗示在标记化之前上游存在一些编码问题的事实。正确读取文件/流会让你得到radwańska

    另见

    【讨论】:

    • 我检查了上游,发现在数据框中我有radwańska。当我使用pandas.DataFrame.to_csv(path) 写入 csv 时,它会弄乱名称。然后我尝试了正确写入csv的utf-8-sig编码,但是后来当我尝试pandas.DataFrame.read_csv(path)时给了unicode-error。我使用了utf-8,utf-8-sig,latin1 的各种组合,但没有一个有效
    猜你喜欢
    • 2022-08-23
    • 2017-03-06
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    相关资源
    最近更新 更多