【问题标题】:Regular Expressions - Read through Text Doc and Extract Sentences with a Specific Word正则表达式 - 通读文本文档并提取具有特定单词的句子
【发布时间】:2020-02-26 23:48:18
【问题描述】:

我有一系列大文本文档。我需要通读它们 - 如果出现特定单词 - 提取整个句子。

所以,如果我正在搜索单词 wobble 并且文档中的句子是 Weebles wobble but they don't fall down,我想提取该句子。

最有效的方法是什么?

我可以想到两种方法:

  1. 在文档中搜索单词,然后提取特定的句子;或

  2. 遍历文档中的每个句子。检查每个句子的单词。如果句子中有单词,则提取句子。

我认为 1 在计算上比 2 更有效。但不确定语法是什么。

我没有考虑其他方法吗?

感谢任何有关效率和语法的帮助。

【问题讨论】:

  • 您追求的是精确度还是效率(=速度)?使用方法#2,它更精确。

标签: regex python-3.x nlp


【解决方案1】:

您首先需要从文本文档中获取正确的句子,最好的方法是使用 nltk.data 标记器首先确保您已正确安装 python nltk 库。

import nltk.data
tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
txt = open("txt_file.txt")
data = txt.read()
all_sentences = tokenizer.tokenize(data)
required_sentences = []
for each_sentence in all_sentences:
    if 'wobble' in each_sentence:
        required_sentences.append(each_sentence)
print(required_sentences)

【讨论】:

  • 我在其他地方使用列表理解看到了以下响应:>>> txt = "我喜欢吃苹果。我也是。我们去买些苹果吧。" >>> [句子+'。' for sentence in txt.split('.') if 'apple' in sentence] ['I like to eat apple.', " Let's go buy some apples."] 我认为这不像 nltk 那样计算效率高,但是比标准的“for”循环更高效?
  • 是的,我正在考虑一个大文本文档,您无法轻易指出句子在哪里完成,您需要一些语义来打破句子 nltk 可以轻松做到这一点。
猜你喜欢
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 2014-11-22
相关资源
最近更新 更多