日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python自然语言处理 3 处理原始文本

發布時間:2023/12/18 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python自然语言处理 3 处理原始文本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章的目的是要回答下列問題:

(1) 怎樣才能編寫程序訪問本地和網絡上的文件,從而獲得無限的語言材料?

(2)如何把文檔分割成單獨的單詞和標點符號,并進行文本語料上分析?

(3)怎樣編寫程序產生格式化的輸出,并把結果保存在文件中?

為了解決這些問題,本章將介紹NLP的重要概念,包括分詞和詞干提取.在過程中,鞏固Python知識并且學習關于字符串,文件和正則表達式的知識.網絡上的文本都是HTML格式的,我們將學習如何使用HTML

一,從網絡和硬盤訪問文本

#處理電子書 txt

古騰堡項目http://www.gutenberg.org/catalog/有25000本免費在線書籍的目錄

編號2554的文本是<罪與罰>

from urllib import urlopen
url = "http://www.gutenberg.org/files/2554/2554-0.txt"
raw = urlopen(url).read()
type(raw)

str

len(raw) 1201733raw = raw.replace('\xef\xbb\xbf','') raw[:75]

'The Project Gutenberg EBook of Crime and Punishment, by Fyodor Dostoevsky\r\n\' 分詞

import nltk

import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )

tokens = nltk.word_tokenize(raw)

type(tokens)

list len(tokens)

244761 tokens[:15]

['\xef','\xbb','\xbfThe','Project','Gutenberg' 在鏈表中創建NLTK文本

text = nltk.Text(tokens)

type(text)

text[1020:1060]

text.collocations()

raw.find("PART I")

5381 raw.rfind("End of Project Gutenberg’s Crime")

1182515 raw = raw[5381:1182515]

raw.find("PART I")

0

#處理HTML

url = "http://news.bbc.co.uk/2/hi/health/2284783.stm"
html = urlopen(url).read()
html[:60]

'<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN' #raw = nltk.clean_html(html)

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
raw = soup.get_text()

tokens = nltk.word_tokenize(raw)

tokens

[u'BBC',u'NEWS',u'|',u'Health',u'|',

#處理搜索引擎的結果

網絡可以被看做未經標注的巨大語料庫

#處理RSS訂閱

http://feedparser.org

#讀取本地文件

import sys

#從PDF,MS word及其他二進制格式中提取文本

使用pypdf和pywin32

#捕獲用戶輸入

s = raw_input("Enter some text: ")

#NLP的流程


二, 字符串: 最底層的文本處理


#鏈表與字符串的差異

字符串和鏈表都是一種序列.可以通過索引抽取它們中的一部分,可以給它們切片,也可以使用連接將它們合并在一起,但是,字符串和鏈表之間不能連接

query = 'Who knows?'?

beatles = ['John', 'Paul', 'George', 'Ringo']

query[0] = 'F'? #不可變

beatles[0] = 'F' #可變的

三, 使用Unicode進行文字處理


#從文件中提取已編碼文本

import? ?codecs

f = codecs.open(path, encoding='utf8')


四? 使用正則表達式檢測詞組搭配


五 正則表達式的有益應用

#提取字符塊

找出文本中兩個或兩個以上的元音序列,并確定它們的相對頻率

import re wsj = sorted(set(nltk.corpus.treebank.words())) fd = nltk.FreqDist(vs for word in wsj for vs in re.findall(r'[aeiou]{2,}', word)) fd.items()

#在字符塊上做更多事情

#查找詞干

查詢"laptops"會找到含有"laptop"的文檔

def stem(word):
? ? for suffix in ['ing','ly','ed','ious','ies','ive','es','s','ment']:
? ? ? ? if word.endswith(suffix):
? ? ? ? ? ? return word[:-len(suffix)]
? ? return word

使用正則表達式

#搜索已分詞文本

這種自動和人工處理相結合的方式是最常見的建造新語料庫的方式

六 規范化文本


raw = """DENNIS:Listen, strange women lying in ponds distributing swords is no basis for a system of government. Supreme executive power derives from a mandate from the masses, not from some farcical aquatic ceremony."""

tokens = nltk.word_tokenize(raw)

#詞干提取器

porter = nltk.PorterStemmer() lancaster = nltk.LancasterStemmer() [porter.stem(t) for t in tokens] [u'denni',':','listen',',',u'strang',
#詞形歸并

wnl = nltk.WordNetLemmatizer() [wnl.lemmatize(t) for t in tokens] ['DENNIS',':','Listen',',','strange',u'woman','lying',

七 用正則表達式為文本分詞

#分詞的簡單方法

re.split(r" ', raw)? ? #在空格符處分割原始文本

re.split(r'[ \t\n]+', raw)? #同時需要匹配任何數量的空格符\制表符或換行符

八 分割

#斷句

sent_tokenizer = nltk.data.load('tokenizers/punkt/english.pickle') text = nltk.corpus.gutenberg.raw('chesterton-thursday.txt') sents = sent_tokenizer.tokenize(text) pprint.pprint(sents[171:181])

#分詞


九 格式化:從鏈表到字符串

#從鏈表到字符串

silly = ['We','called','him','Tortoise','because','he','taught','us','.'] ' '.join(silly) 'We called him Tortoise because he taught us .' ';'.join(silly) 'We;called;him;Tortoise;because;he;taught;us;.' ''.join(silly) 'WecalledhimTortoisebecausehetaughtus.'

十 深入閱讀

















































總結

以上是生活随笔為你收集整理的Python自然语言处理 3 处理原始文本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。