2

在进一步处理之前,我需要将电子邮件中自然、连贯的文本/句子与列表、签名、问候语等分开。

例子:

你好汤姆,

上周一我们做了 bla bla、lore Lorem ipsum dolor sit amet、consectetur adipisici elit、sed eiusmod tempor incidunt ut labore et dolore magna aliqua。

  • 清单项目 2
  • 清单项目 3
  • 清单项目 3

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid x ea commodi consequat。Quis aute iure reprehenderit in voluptate velit

问候,K。

---一行有趣的字符-#######

示例公司

伦敦邪恶街 33 号

手机:00 234534/234345

理想情况下,该算法将仅匹配粗体部分。

是否有任何推荐的方法 - 或者是否有针对该问题的现有算法?我应该根据标点符号的数量、长度等尝试近似的正则表达式还是更多的统计数据?

4

4 回答 4

4

您需要经过认真的 NLP 工作才能完成所需的处理(取决于您期望的精度水平以及代码输入电子邮件数据的随机性和模糊性)。

这个。有关其他相关内容,请参阅参考资料部分。

处理不同的分类问题,但涉及对电子邮件文本进行操作。

于 2012-04-06T17:58:30.747 回答
3

在您发布的示例中,行长就足够了。

没有完美的算法;甚至人类也会对线条进行不同的分类。

我建议只使用行长,直到你找到一个反例,然后修改你的算法。重复直到问题解决到您满意为止。

于 2012-04-06T16:53:10.583 回答
0

您将需要许多启发式方法来获得解决方案的近似值,所以这里有一个:您可以安全地切断 sigdash(连字符-连字符-空格)之后的任何内容,符合标准的电子邮件用于将邮件正文与签名。

您可以使用的另一种方法是存储来自同一发件人的电子邮件副本;这应该允许您在每条消息中提取相同或相似的内容(例如称呼和签名)并检测他们的邮件客户端如何引用。

于 2012-04-06T18:05:01.693 回答
-2

如果您唯一的任务是找出粗体部分,请查看粗体文本在邮件数据库中的技术实现方式。例如,如果它是 html,你可以有这样的东西:

你好汤姆,

上周一我们做了 bla bla、lore Lorem ipsum dolor sit amet、consectetur adipisici elit、sed eiusmod tempor incidunt ut labore et dolore magna aliqua。

list item 2
list item 3
list item 3

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid x ea commodi consequat。Quis aute iure reprehenderit in voluptate velit

问候,K。

---一行有趣的字符-#######

然后您可以运行以下代码:

import re
# save the mail above as variable MailAbove
print re.findall(r'<b>(.*?)</b>',MailAbove)

结果:

['上周一我们做了 bla bla,lore Lorem ipsum dolor sit amet,consectetur adipisici elit,sed eiusmod tempor incidunt ut labore et dolore magna aliqua。','Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquid x ea商品后果。Quis aute iure reprehenderit in voluptate velit']

编辑:从评论中可以看出我误解了这个问题。通常,此类任务是一个多阶段的过程:您应用一些方法,然后查看结果以及遗漏或错误的内容,然后进行修复或添加新方法并查看结果。
我建议您阅读此书——一本出色的教程/书籍,用于解决像您这样的任务以及其他任务。

于 2012-04-06T17:25:55.830 回答