繁体   English   中英

如何使用NLTK和Python从文本中删除自定义单词模式

[英]How to remove a custom word pattern from a text using NLTK with Python

我目前正在研究一个分析质量试卷问题的项目。在这里,我将Python 3.4与NLTK一起使用。
所以首先我要把每个问题从文本中分开拿出。下面是试卷格式。

 (Q1). What is web 3.0?
 (Q2). Explain about blogs.
 (Q3). What is mean by semantic web?
       and so on ........

所以现在我要一个没有问题号的问题就一个一个地提取问题(问题号格式总是和上面给出的一样),所以我的结果应该是这样的。

 What is web 3.0?
 Explain about blogs.
 What is mean by semantic web?

那么如何使用NLTK的python 3.4解决这个问题呢?
谢谢

您可能需要检测包含问题的行,然后提取问题并删除问题编号。 用于检测问题标签的regexp是

qnum_pattern = r"^\s*\(Q\d+\)\.\s+"

您可以使用它来提出这样的问题:

questions = [ re.sub(qnum_pattern, "", line) for line in text if 
                                            re.search(qnum_pattern, line) ]

显然, text必须是行列表或打开的文件以供阅读。

但是,如果您不知道如何解决这个问题,那么剩下的工作就可以帮您完成工作。 我建议花一些时间在python教程或其他入门资料上。

如果每个句子都以这种模式开头,那么您所要求的内容很容易解析,您可以使用split删除此前缀:

sentences = [ "(Q1). What is web 3.0?",
              "(Q2). Explain about blogs.",
              "(Q3). What is mean by semantic web?"]
for sen in sentences:
    print sen.split('). ',1)[1]

这将打印:

What is web 3.0?
Explain about blogs.
What is mean by semantic web?

如果(QX)始终在文本之前用空格隔开,则可以执行以下操作:

>>> text = """(Q1). What is web 3.0?
...  (Q2). Explain about blogs.
...  (Q3). What is mean by semantic web?"""
>>> for line in text.split('\n'):
...     print line.strip().partition(' ')[2]
... 
What is web 3.0?
Explain about blogs.
What is mean by semantic web?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM