【问题标题】:Extract only complete setences from emails using Python?使用 Python 仅从电子邮件中提取完整的句子?
【发布时间】:2013-06-26 12:47:13
【问题描述】:

我有数千封以纯文本或 HTML 格式存储的电子邮件。所有纯文本电子邮件的格式都几乎相同,因此仅提取实际电子邮件非常简单。

但是 HTML 电子邮件到处都是,我发现很难想出一个只提取正文消息的方法。电子邮件中还有很多我不想要的其他垃圾内容,例如“这封电子邮件是由...生成的”以及一堆其他非用户生成的文本,这些文本会随着电子邮件的变化而变化。

Python 是否有某种方法可以识别类似于正文或完整句子的内容?

我已经尝试过使用这里的正则表达式: a Regex for extracting sentence from a paragraph in python

但问题在于我有很多这样的行:

头衔*:先生

正则表达式认为是一个句子,我不想提取。

我还尝试将该正则表达式与 NLTK 的词性标注器结合起来,只打印出同时具有名词和动词的句子,但我似乎效果不佳,因为它只是内置的词性标注器和没有在任何数据集上训练。

所以我想我的问题是:我该如何解决我的问题?我错过了什么吗?

【问题讨论】:

  • 您是否正在构建一个火腿/垃圾邮件分类器?您可以将非句子视为垃圾邮件,将句子视为火腿。

标签: python nlp extract html-email text-processing


【解决方案1】:

我希望您在 html 段落中需要的所有句子都被 <P></P> 标签包围。您可以先使用 re 来提取这些内容,然后再对其进行处理。

【讨论】:

  • 不幸的是,html 是如此不一致,以至于其中一些有

    包围所有文本或只是一个小的 sn-p。但是通过对电子邮件的进一步检查,我发现

    标记方法足够真实,足以提供帮助。谢谢!

【解决方案2】:

您可以使用BeautifulSoup 来解析电子邮件的 HTML 标签,然后使用正则表达式继续

【讨论】:

  • 我结合了这个和史蒂夫上面所说的!
【解决方案3】:

请参阅NLTK's tokenizer package 中的nltk.tokenize.sent_tokenize(text)。请注意,您必须在目标文本上自己尝试一下。在将文本标记为句子时,总会有一些奇怪的情况,即一个句子标记器或另一个产生错误的输出。

【讨论】:

    猜你喜欢
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多