python - NLTK研究课题
问题描述
我正在尝试标记一个句子,然后删除标点符号。
from nltk import word_tokenize
from nltk import re
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
sentence = "what's good people boy's"
tokens = word_tokenize(sentence)
tokens_nopunct = [word.lower() for word in tokens if re.search("\w",word)]
tokens_lemma = [lemmatizer.lemmatize(token) for token in tokens]
print(tokens_lemma)
这给出了输出:
['what', "'s", 'good', 'people', 'boy', "'s"]
但我希望它实现输出:['what', 'good', 'people' , 'boy']
我一直在查看 nltk 和文档,它说 re.search 是您删除标点符号的方式,但它不起作用,我的代码中是否还有其他错误?
解决方案
这将用于删除所有带有标点符号的元素(不仅仅是's
):
import string
punc = set(string.punctuation)
a = ['what', "'s", 'good', 'people', 'boy', "'s"]
without_punc = list(filter(lambda x: x[0] not in punc, a))
print(without_punc) //['what', 'good', 'people', 'boy']
推荐阅读
- java - 如何正确创建 Java 内部类?
- mysql - 限制表格列的行数
- apache-spark - IllegalArgumentException:此服务需要项目 ID,但无法从构建器或环境中确定
- amazon-web-services - AWS。通过 Glue 将数据从 S3 写入 Elasticsearch
- java - java keystore CA 证书有效性扩展
- pine-script - 如何在 pine 脚本中以柱线开盘价输入多头/空头策略?
- python - 输入选择生成多少结果
- xamarin.forms - 如何通过自动化 ID 获取文本?
- java - 使用杰克逊将计算的虚拟属性添加到每个字段
- python - 在 Tkinter 上更改 Entry 变量