python - 将元组更改为小写 - 特定情况(Python;NLTK)

标签 python tuples nltk lowercase

我正在使用 Python 和 NLTK 并尝试将 Brown 语料库更改为小写。

特别是,我的目标是用每个单词最可能的词性来标记单词列表(例如,“圣诞节”是一个名词)。但是,我的单词列表包含所有小写单词(“christmas”)。因此,有些单词由于大小写不匹配而无法识别。

brown.tagged_sents() 中的元组如下所示:

[[(u'The', u'AT'), (u'Fulton', u'NP-TL'), (u'County', u'NN-TL'),...

我尝试过以下代码:

brown_sents = brown.tagged_sents()
brown_sentslower = [[x.lower() for x in element] for element in brown_sents]

但仍然收到错误:

AttributeError: 'tuple' object has no attribute 'lower'

我成功复制了另一个答案( Python: Using lower function on tuples )的结果,但我想知道将此代码与 Brown.tagged_sents() 一起使用是否有什么特别之处。

最佳答案

将元组中的元素小写:

brown_sentslower = [[(word.lower(), tag.lower()) for word, tag in element]
                    for element in brown_sents]

请注意,我在 for 循环中使用了元组解包;每个 (word, tag) 对都被解包到 wordtag 变量中,因此您可以单独对它们进行寻址。然后循环生成一个新元组,其中包含这两个值的小写版本。

这假设您希望单词标签都小写;例如(u'Fulton', u'NP-TL') 变为 (u'fulton', u'np-tl')

如果只需要小写单词,请将 tag.lower() 替换为 tag:

brown_sentslower = [[(word.lower(), tag) for word, tag in element]
                    for element in brown_sents]

关于python - 将元组更改为小写 - 特定情况(Python;NLTK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33047689/

相关文章:

python - SSL:CERTIFICATE_VERIFY_FAILED 证书验证失败 (_ssl.c.661)

python - 从 pandas DataFrame 创建术语密度矩阵的有效方法

python3.6用unicode创建win32快捷方式

python - 从此 Python 生成器中删除递归

python - 答案在控制台中打印但在执行程序文件时不打印(Python)

rust - 为什么对 Regex::find 的结果进行匹配会提示期望结构 regex::Match 但找到元组?

c++ - std::get 从模板参数

python - 使用 pandas 从字符串生成 N-Grams

python - 了解 Pandas 的滚动相关性

c++ - variadic类参数成员变量的异构存储