《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.1 何谓文本歧义

简介:

本节书摘来异步社区《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书中的第2章,第2.1节,作者:Nitin Hardeniya,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.1 何谓文本歧义

事实上,要想给文本/数据歧义这个术语一个定义是相当困难的。本书将它定义成从原生数据中获取一段机器可读的已格式化文本之前所要做的所有预处理工作,以及所有繁复的任务。该过程应该涉及数据再加工(data munging)、文本清理、特定预处理、标识化处理、词干提取或词形还原以及停用词移除等操作。下面我们就先来看一个基本实例,解析一个csv文件:

>>>import csv
>>>with open('example.csv','rb')  as f:
>>>    reader = csv.reader(f,delimiter=',',quotechar='"') 
>>>    for line in reader :
>>>        print line[1]    # assuming the second field is the raw sting

如你所见,上述代码在试图对csv文件进行解析,它将会csv文件中所有的列元素构造成一个列表。我们在这操作过程中可以自定义相关的分隔符和引用符(quoting character)。现在的问题是,这些原生字符串会涉及上一章中所学到的那些不同类型的文本歧义。而其中的关键是我们要提供能应付日常csv文件的足够细节的信息。

这些最常见文档类型通常都有一个清晰的处理流程,我们可以通过图2-1了解一下。

8ebe4897780f8660bc1e8de25b296e9cc4d94c9b

在上图中,堆栈的第一层中列出了一些最常见的数据源。在大多数情况下,我们遇到的数据都属于这些数据格式中的某一个。接下来的这一层是Python对于这些数据格式最常见的封装方式。例如在之前的csv文件的例子中,Python的csv模块是处理csv文件最可靠的方法。通过该模块,我们可以使用各种不同的分离器和引用符等工具。

除此之外,json也是一种常见的文件格式。

下面来看一个具体的json实例:

{
  "array": [1,2,3,4],
 "boolean": True,
  "object": {
    "a": "b"
  },
  "string": "Hello World"
}

现在让我们来处理一下该字符串,其解析代码如下:

>>>import json
>>>jsonfile = open('example.json')
>>>data = json.load(jsonfile)
>>>print data['string']
"Hello World"

如你所见,这里只是用json模块加载了一个json文件。Python允许我们挑选相关原生字符串的形式并对其进行处理。关于其他所有数据源的更详细信息以及Python中相关的解析工具包,请读者自行参考我们上面列出的那个图表。当然,我们在这里只能指出相关的方向,至于这些工具包的详细信息,还需读者自己上网去搜索。

所以,在我们针对这些不同的文档格式编写自己的解析器之前,请再看一下上图第二行中所列出的Python解析器。当我们获得某一段原生字符串时,所有相关的预处理步骤都可以被当作是某一种管道,或者还可以选择性地忽略掉其中的部分内容。下一节,我们将会具体讨论标识化处理、词干提取以及词形还原的相关细节。并且,我们也会讨论一下这些应用的各种变化,以及何时适用于其他场景。

注意 提示: 

现在,既然我们对文本歧义是什么有了一点想法,就请试着用上述图表中所列出的某个Python模块连接任意一种数据库试试。

相关文章
|
7月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
1774 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
5月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
1054 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
5月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
459 0
|
7月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
4月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
431 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
4月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
449 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
5月前
|
机器学习/深度学习 数据采集 算法
量子机器学习入门:三种数据编码方法对比与应用
在量子机器学习中,数据编码方式决定了量子模型如何理解和处理信息。本文详解角度编码、振幅编码与基础编码三种方法,分析其原理、实现及适用场景,帮助读者选择最适合的编码策略,提升量子模型性能。
448 8
|
6月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
429 18
|
6月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1225 1

推荐镜像

更多