专栏首页思考的代码世界Python网络数据采集之处理自然语言|第07天
原创

Python网络数据采集之处理自然语言|第07天

User:你好我是森林 Date:2018-04-01 Mark:《Python网络数据采集》 原文:https://chensenlin.cn/posts/54692/

网络采集系列文章

Python网络数据采集之创建爬虫

Python网络数据采集之HTML解析

Python网络数据采集之开始采集

Python网络数据采集之使用API

Python网络数据采集之存储数据

Python网络数据采集之读取文件

Python网络数据采集之数据清洗

处理自然语言

概括数据

在之前我们了解了如何把文本内容分解成 n-gram 模型,或者说是n个单词长度的词组。从最基本的功能上说,这个集合可以用来确定这段文字中最常用的单词和短语。另外,还可以提取原文中那些最常用的短语周围的句子,对原文进行看似合理的概括。

例如我们根据威廉 ·亨利 ·哈里森的就职演全文进行分析。文章地址

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import string
from collections import Counter

def cleanSentence(sentence):
    sentence = sentence.split(' ')
    sentence = [word.strip(string.punctuation+string.whitespace) for word in sentence]
    sentence = [word for word in sentence if len(word) > 1 or (word.lower() == 'a' or word.lower() == 'I')]
    return sentence

def cleanInput(content):
    content = content.upper()
    content = re.sub('\n', ' ', content)
    content = bytes(content, 'UTF-8')
    content = content.decode('ascii', 'ignore')
    sentences = content.split('. ')
    return [cleanSentence(sentence) for sentence in sentences]

def getNgramsFromSentence(content, n):
    output = []
    for i in range(len(content)-n+1):
        output.append(content[i:i+n])
    return output

def getNgrams(content, n):
    content = cleanInput(content)
    ngrams = Counter()
    ngrams_list = []
    for sentence in content:
        newNgrams = [' '.join(ngram) for ngram in getNgramsFromSentence(sentence, n)]
        ngrams_list.extend(newNgrams)
        ngrams.update(newNgrams)
    return(ngrams)


content = str(
      urlopen('http://pythonscraping.com/files/inaugurationSpeech.txt').read(),
              'utf-8')
ngrams = getNgrams(content, 3)
print(ngrams)
     

自然语言工具包

自然语言工具包(Natural Language Toolkit,NLTK)就是这样一个 Python库,用于识别和标记英语文本中各个词的词性(parts of speech)。

安装与配置

NLTK网站(http://www.nltk.org/install.html)。安装软件比较简单,例如pip安装。

➜  psysh git:(master) pip install nltk
Collecting nltk
  Using cached nltk-3.2.5.tar.gz
Requirement already satisfied: six in /usr/local/lib/python3.6/site-packages (from nltk)
Building wheels for collected packages: nltk
  Running setup.py bdist_wheel for nltk ... done
  Stored in directory: /Users/demo/Library/Caches/pip/wheels/18/9c/1f/276bc3f421614062468cb1c9d695e6086d0c73d67ea363c501
Successfully built nltk
Installing collected packages: nltk
Successfully installed nltk-3.2.5
You are using pip version 9.0.1, however version 9.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

检测一下就OK

➜  psysh git:(master) python
Python 3.6.4 (default, Mar  1 2018, 18:36:50)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import nltk
>>>

输入nltk.download()就可以看到NLTK下载器。

NLTK下载器

默认下载全部的包,新手减少排除的相关的麻烦。

安装包

用NLTK做统计分析

NLTK做统计分析一般是从Text对象开始的。Text对象可以通过下面的方法用简单的 Python字符串来创建:

from nltk import word_tokenize 
from nltk import Text

tokens = word_tokenize("哈哈哈哈哈")
text = Text(tokens)

word_tokenize函数的参数可以是任何Python字符串。如果你手边没有任何长字符串,但是还想尝试一些功能,在NLTK库里已经内置了几本书,可以用import函数导入:

from nltk.book import *

统计文本中不重复的单词,然后与总单词数据进行比较:>>> len(text6)/len(words)

今天内容比较少,消化比较困难。哈哈哈

欢迎你免费加入我的星球,一起分享,共同成长。

知识星球

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python网络数据采集之处理自然语言|第07天

    你好我是森林
  • Web API 的确认清单

    你好我是森林
  • Python网络数据采集之读取文档|第05天

    你好我是森林
  • 那些年我们吹过的牛逼——人工智能

    人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术...

    企鹅号小编
  • 学习笔记CB002:词干提取、词性标注、中文切词、文档分类

    英文词干提取器,import nltk,porter = nltk.PorterStemmer(),porter.stem('lying') 。

    利炳根
  • 20行Python代码,无损压缩千百张图片!

    因为高清大图放到网站上会严重拖慢加载速度,或是有的地方明确限制了图片大小,因此,为了完成工作,他们总是需要先把图片压缩,再上传。

    python学习教程
  • GNN 系列(二):图神经网络的“开山之作”GCN模型

    这是我们介绍图神经网络的第一篇文章,取自Kipf et al. 2017,文章中提出的模型叫Graph Convolutional Network(GCN),个...

    Coggle数据科学
  • OSPF-5种报文、3个阶段、3张表

    在理解OSPF各种报文之前,需先清楚OSPF协议,通过下面图例帮助理解(口诀:5种报文、3个阶段、3张表)

    py3study
  • 入门 | 强化学习的基本概念与代码实现

    机器之心
  • Qt创建及使用动态链接库(一)

    2、显示链接DLL,调用DLL中类对象、成员函数。(通过对象即可实现类成员函数的调用)

    Sindsun

扫码关注云+社区

领取腾讯云代金券