9.自然语言处理

本文介绍了自然语言处理的基础知识,包括使用n-gram模型进行文本概括,马尔可夫模型在天气系统的应用,以及Python的NLTK库在统计分析和词性标注中的使用。通过实例展示了如何利用这些工具进行文本分析和理解,如创建马尔可夫链,以及使用NLTK进行词频统计和词性标注。
摘要由CSDN通过智能技术生成

理解文本分析的原理对各种机器学习场景都是非常有用的,而且还可以提高自己利用概率论和算法知识对现实问题进行建模的能力。
1.概括数据
简单修改一下我们在第 8 章用过的 n-gram 模型,就可以用来获得 2-gram 序列的频率数据,并返回一个 2-gram 的 Counter 对象,代码如下:

# -*- coding: GBK -*-
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, 2)]
		ngrams_list.extend
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值