Python数据科学入门
Dmitry Zinoviev著
熊子源 译
第三章 使用文本数据
第13单元 处理HTML文件
Beautifulsoup通过Python字典接口实现对HTML标签属性的访问。如果标签对象t表示超链接,则超链接目标的字符串值为t[“herf”].string。HTML标签是不区分大小写的。
Soup最有用的函数:
soup.find() | 找到目标的一个实例 |
---|---|
soup.find_all() | 找到目标的所有实例 |
HTML\XML之所以强大,是因为有多样化的功能,但是这些功能未尝不是他们的魔咒。尤其是涉及到表格数据。
第14单元 处理CSV文件
CSV写入器提供writerow()和writerows()两个函数:
Writerow() | 将一个字符串或数字作为一条记录写入文件 |
---|---|
Writerows() | 将字符串或数字列的列表作为记录集写入文件 |
第15单元 读取JSON文件
JSON是一种轻量级的数据交换格式,该格式与编码语言无关。
某些Python中的数据类型和结构(集合、复数)无法存储在JSON中。需要在导入前将他们转换成JSON可表示的数据类型。
数据序列化:
(序列化:将复杂数据存放在JSON文件中的操作)
dump() | 将一个用JSON表示的Python对象导出到先前打开的文本中 |
---|---|
dumps() | 导出的Python对象是文本字符串 |
loads():将有效的JSON字符串转换为Python对象
第16单元 处理自然语言中的文本
NLTK语料库:
NLTK语料库都存储在模块nltk.corpus中。
nltk.corpus.wordnet对象:一个在线语义网络WordNet(用词性和序列号标记的同义词集合)
同义词可以具有上义词(含义比较抽象的同义词)和下义词(含义比较具体的同义词)
plaintextCorpusReader创建自己的语料库:
fields() #返回包含在新创建的语料库中的文件列表
raw() #返回语料库中原始的“原始”文件
sents() #返回所有句子的列表
words() #返回所有单词的列表
规范化
Word_tokensize(text) | 切分单词 |
---|---|
sent_tokensize(text) | 切分句子 |
regexp_tokensize(text,re) | 基于正则表达式的分词 |
NLTK提供了两种基本的词干分析器:
- Porter:比较保守
- Lancaster:比较激进,会产生更多的音型相近但含义不同的句子
Nltk.pos_tag(text) :为文本中的每一个单词分配一个词性标签,其中文本是一个单词列表。函数的返回值是一个元组列表,其中元组的第一个元素是原始单词,第二个元素是标签。
(
"All we can do is our best, and sometimes the best we can do is to start over."--《Avengers: Endgame》
)