从语料库中删除标点符号时发生错误

2024-10-03 15:23:55 发布

您现在位置:Python中文网/ 问答频道 /正文

提前谢谢你的帮助。我正在尝试编写一个脚本,它将查看一个语料库,找到所有的三元组,并将它们连同它们的相对频率一起打印到一个csv文件中。我已经走得很远了,但还是遇到了一个问题。因为撇号,它认为连词是两个词,所以它把doesn't分割成{},这就弄乱了三元组的计数。我试图通过删除原始变量中的所有标点符号来解决这个问题,我认为它只是一个长字符串,它包含了我语料库中的所有文本,行如下:

    raw = raw.translate(None, string.punctuation)

但这给了我一个错误:NameError: name 'string' is not defined

但我不认为字符串在这样使用的时候必须被定义?这是否意味着raw不是字符串?如何解决这个问题?在

^{pr2}$

Tags: 文件csv字符串文本脚本stringrawtranslate
2条回答

如果你想在单词中保留撇号,另一个选择

你不必把撇号分开。只需尝试更改标记器上的正则表达式以包含撇号:

tokenizer = RegexpTokenizer(r'\w+')

尝试:

^{pr2}$

或者也可以看看这里的回答,也许更好:

Regex to match words and those with an apostrophe

But I didn't think string had to be defined when used like that?

与Python中的所有其他模块一样,您需要在使用string之前导入它。在

Does that mean raw is not a string?

不要将string模块与类型字符串混淆。对。可能raw是string类型。在

How can solve this?

在文件开头添加import string。在

相关问题 更多 >