gpt4 book ai didi

Python TextBlob 包 - 确定 '%' 符号的 POS 标记,但不将其打印为单词

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:50 24 4
gpt4 key购买 nike

我正在用 python 的 TextBlob 包敲头

  • 识别段落中的句子
  • 识别句子中的单词
  • 确定这些单词的 POS(词性)标签等...

一切都很顺利,直到我发现了一个可能的问题(如果我没猜错的话)。下面通过示例代码片段对其进行解释。

from textblob import TextBlob
sample = '''This is greater than that by 5%.''' #Sample Sentence
blob = TextBlob(sample) #Passing it to TextBlob package.
Words = blob.words #Splitting the Sentence into words.
Tags = blob.tags #Determining POS tag for each words in the sentence

print(Tags)
[('This', 'DT'), ('is', 'VBZ'), ('greater', 'JJR'), ('than', 'IN'), ('that', 'DT'), ('by', 'IN'), ('5', 'CD'), ('%', 'NN')]

print(Words)
['This', 'is', 'greater', 'than', 'that', 'by', '5']

如上所示,blob.tags 函数将“%”符号视为单独的单词,并确定 POS 标记。

而 blob.words 函数甚至不单独打印“%”符号或与其前一个单词一起打印。

我正在使用这两个函数的输出创建一个数据框。因此,由于长度不匹配问题,它没有被创建。

这是我的问题。TextBlob 包中是否有可能出现此问题?有什么方法可以识别单词列表中的“%”吗?

最佳答案

在标记化时去掉标点符号似乎是 TextBlob 开发人员有意识的决定:https://github.com/sloria/TextBlob/blob/dev/textblob/blob.py#L624

它们依赖于 NLTK 的标记化器,该标记化器采用 include_punct 参数,但我没有找到通过 TextBlob 将 include_punct=True 传递到 NLTK 标记化器的方法。

当遇到类似的问题时,我用旨在表示它的非字典文本常量替换了有趣的标点符号,即:在标记化之前将“%”替换为“PUNCTPERCENT”。这样,百分号的信息就不会丢失。

编辑:我的观点是正确的,在 TextBlob 初始化时,您可以通过其 __init__ 方法的 tokenizer 参数设置标记器 https://github.com/sloria/TextBlob/blob/dev/textblob/blob.py#L328 .

因此,您可以轻松地向 TextBlob 传递一个尊重标点符号的分词器。

respectful_tokenizer = YourCustomTokenizerRepectsPunctuation()
blob = TextBlob('some text with %', tokenizer=repectful_tokenizer)

EDIT2:我在查看 TextBlob 的来源时遇到了这个问题:https://github.com/sloria/TextBlob/blob/dev/textblob/blob.py#L372注意words方法的文档字符串,它说如果你想包含标点符号,你应该访问tokens属性而不是words属性。

关于Python TextBlob 包 - 确定 '%' 符号的 POS 标记,但不将其打印为单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46462587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com