首页 > 编程 > Python > 正文

用Python进行一些简单的自然语言处理的教程

2020-02-23 00:29:26
字体:
来源:转载
供稿:网友

本月的每月挑战会主题是NLP,我们会在本文帮你开启一种可能:使用pandas和python的自然语言工具包分析你Gmail邮箱中的内容。

NLP-风格的项目充满无限可能:

    情感分析是对诸如在线评论、社交媒体等情感内容的测度。举例来说,关于某个话题的tweets趋向于正面还是负面的意见?一个新闻网站涵盖的主题,是使用了更正面/负面的词语,还是经常与某些情绪相关的词语?这个“正面”的Yelp点评不是很讽刺么?(祝最后去的那位好运!)     分析语言在文学中的使用,进而衡量词汇或者写作风格随时间/地区/作者的变化趋势.     通过识别所使用的语言的关键特征,标记是否为垃圾内容。     基于评论所覆盖的主题,使用主题抽取进行相似类别的划分。     通过NLTK's的语料库,应用Elastisearch和WordNet的组合来衡量Twitter流API上的词语相似度,进而创建一个更好的实时Twitter搜索。     加入NaNoGenMo项目,用代码生成自己的小说,你可以从这里大量的创意和资源入手。

将Gmail收件箱加载到pandas

让我们从项目实例开始!首先我们需要一些数据。准备你的Gmail的数据存档(包括你最近的垃圾邮件和垃圾文件夹)。

https://www.google.com/settings/takeout

现在去散步吧,对于5.1G大小的信箱,我2.8G的存档需要发送一个多小时。

当你得到数据并为工程配置好本地环境之后好,使用下面的脚本将数据读入到pandas(强烈建议使用IPython进行数据分析)
 

from mailbox import mboximport pandas as pd def store_content(message, body=None): if not body:  body = message.get_payload(decode=True) if len(message):  contents = {   "subject": message['subject'] or "",   "body": body,   "from": message['from'],   "to": message['to'],   "date": message['date'],   "labels": message['X-Gmail-Labels'],   "epilogue": message.epilogue,  }  return df.append(contents, ignore_index=True) # Create an empty DataFrame with the relevant columnsdf = pd.DataFrame( columns=("subject", "body", "from", "to", "date", "labels", "epilogue")) # Import your downloaded mbox filebox = mbox('All mail Including Spam and Trash.mbox') fails = []for message in box: try:  if message.get_content_type() == 'text/plain':   df = store_content(message)  elif message.is_multipart():   # Grab any plaintext from multipart messages   for part in message.get_payload():    if part.get_content_type() == 'text/plain':     df = store_content(message, part.get_payload(decode=True))     break except:  fails.append(message)

上面使用Python的mailbox模块读取并解析mbox格式的邮件。当然还可以使用更加优雅的方法来完成(比如,邮件中包含大量冗余、重复的数据,像回复中嵌入的“>>>”符号)。另外一个问题是无法处理一些特殊的字符,简单起见,我们进行丢弃处理;确认你在这一步没有忽略信箱中重要的部分。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表