標籤:

如何把 Web 頁面上抓取下來的海量文本信息從非結構化信息變成結構化信息?


如何把 Web 頁面上抓取下來的海量文本信息從非結構化信息變成結構化信息?

1、怎麼把網頁的文本內容都抓下來

主要是網頁爬蟲技術,主流的工具如:Welcome to Apache Nutch?,Heritrix - Heritrix等等。

主要原理就是從預設的一些URL,先模擬瀏覽器訪問,拿到網頁的HTML文本,然後分析其中包括的URL鏈接,再去或者這些URL的HTML文本,循環這個過程,進而拿到海量的網頁文本內容。

2、怎麼把網頁的非結構化內容變成結構化數據

1) 一般來說,網頁內容也是有一定結構的,&塊里是標題,meta里可能包括key words,body里是正文內容,拿到body的文本,去掉所有的html標記(比如用HTMLparser)就拿到body里的文本數據了。這樣一個簡單的結構化數據就有了(title,keywords,body)。

2) 對於上面的內容,一般的可能需要進行分類,比如財經的信息、體育的信息、醫療的信息,這需要使用聚類、分類的技術,以及相關的樣本。比如那些關鍵字屬於財經類的,然後從財經的數據的meta或body里去分析數據,最後得到這篇文章跟財經類的數據的相關性,從而把它正確分類。結構化數據就成了(title,keywords,body,category)

3) 有時候我們還需要拿到摘要信息。通過對文檔進行上面的分析,我們大概就知道這篇文檔是什麼類型的,基於關鍵詞我們還能大概清楚他是說什麼的,從而可以提煉出來摘要信息。結構化數據就變成了(title,keywords,body,category,summary)

4) 其實可以更細一點,比如我們分析文本內容里的標題,比如所有的文字都是5號宋體,而最前面是H1雅黑、而且跟keywords或摘要很匹配,那麼可以看做標題。同理,我們可以從內容里分析出來段落、章節等不同section的主題。這時候我們可以結構化成(title,keywords,body,category,summary,sections[])

5) 上面說的是基於文本的通用結構化方法。針對某個網站的具體欄目,其網頁的模版結構一般是固定的,都是基於一個固定的CMS模版來生成的。所以,我們可以定義一些轉換的xml模版,標記從目標的HTML的哪些tag上獲取數據,然後填到我們的轉換結果的相對應的位置上去。從而完成很完美的結構化處理。雖然這個過程中的模版,一般需要人工生成,並且在目標網站的CMS更新時也需要

人工處理。目前很多資訊類、或者比價類的網站爬蟲都是找一些實習生,稍微訓練一下,就來做這種轉換模版,然後交給系統直接在爬蟲爬的同時就轉換好結構化數據。(我會說x淘就是么)

6) 如果目標網站提供了RSS功能,基本上就直接拿到結構化數據了。


結構化信息就是將無規則的文本進行詞性標註,分出單詞,組詞,成語,專有名詞等等。

將下載的文本信息txt進行90%與10%比例分配,在python3.4的環境下進行去除無意義詞如字母,數字,符號,再進行詞性標註。使用條件隨機場CRF對90%的數據train.txt進行crf-learn訓練,構造出一個特徵模版,再對test.txt進行測試crf-test-model。調出output的對比度,從而得出語言學習的方法。規則庫是用於處理某一類問題的規則的集合,例如詞法規則庫、句法規則庫。規則是語言知識的經典表現形式,理性主義方法通常叫做基於規則的方法。

規則庫的長處是表現形式直觀,易於理解,缺點是覆蓋率高的規則往往正確率低,正確率高的規則往往覆蓋率低,難以兼得。規則庫越大,規則之間越容易發生衝突,有歧義的規則,條件部分相同,動作部分不同,有矛盾的規則,一個實例可以用幾條規則,這些規則的動作相反。建造規則庫的人工成本巨大。

漢語中常見的中文電子詞典有,現代漢語語法信息詞典:GKB,同義詞詞林,知網。GKB是一部面向語言信息處理的大型電子詞典。詞林的突出優點是詞義代碼,可據此計算出詞義之間的距離和相似度。知網作為一個知識推理網路,以下幾個方面體現其應用價值:1,漢語句法分析歧義消解。2,漢語辭彙語義相似度計算。3,中文文本自動分類。4,中文信息結構抽取。

語料庫是為了語言研究按照一定原則而收集和組織的,真實的自然語言作品的集合。

語言學家把語料當做是證明自己觀點的材料,計算語言學家把語料庫當做是語言知識的來源,語言模型的處理對象,語言模型的評價標準:從訓練語料庫中獲取語言知識,用語言模型對語料庫進行各種加工處理,用測試語料來評價語言模型的性能。

一些重要的中文語料庫:北大現代漢語標註語料庫(人民日報語料來源),教育部現代漢語標註語料庫,清華漢語樹庫,哈工大漢語樹庫,賓州樹庫。

科學研究的第四範式指實驗型,理論型到計算型科研推進到第四範式-數據密集型科研。

語言模型,狹義指用來度量語言符號串合法性的概率分布。廣義指語言信息處理時用來判別或預測的概率公式。

分類是把樣本歸入到已有類別,是有指導的,聚類是自動建立分類體系,將樣本歸入到這些類別是無指導的。

自然語言處理的根本問題就是歧義消解,歧義消解就是分類,分類是定性的預測,回歸是定量的預測。

NB貝葉斯分類器:一個y對應多個x

ME最大熵模型:一個y對應一個x

HMM隱馬爾科夫模型:一串y對應一串x

CRF條件隨機場:一串y對應一串x

決策樹:是樣本集的分類器,其分類方式表現為一種樹形選擇。

CRF的優勢:它是一種用於序列標註的判別模型,優點是較好的克服了輸出獨立性假設和馬爾科夫性假設的局限性,能從上下文中任意的選擇所需要的特徵。

CRF在基於字元的中文分詞,命名實體識別,短語組塊,基本名詞短語識別等應用中表現優異。

CRF缺點是參數規模過大,訓練時間特別長。


我在另一個類似話題下跟大家分享了「從非結構化文本中提取知識」的技術前沿~

請戳:https://www.zhihu.com/question/59624229

歡迎同道中人共同學習、討論。


這個首先你得有提取信息的規則。如果你抓取的信息不是有一定規律的話,真的沒有辦法變成結構化信息,如果喲規律的話,可以分析出其中的規律,然後寫個演算法 進行整理。


首先要看源web頁面的結構,如果文本是在div table等tag中,解析html就行了。


我覺得題主的問題應該分成兩個。第一個問題是如何從web上提取有效文本,即從抓取的腳本原代碼中去除那些腳本標籤、符號等;第二個問題是如何進行自然語言的處理。

關於第二個問題,權威的回答見 微軟亞洲研究院首席研究員周明博士 的回答,

自然語言處理怎麼最快入門? - 知乎


題主的問題缺少例子啊。

幾個答主沒太看明白問題,題主的問題重點在於「如何結構化文本信息」,而不是如何抓下來、如何解析。。。

我舉個例子吧,也是我最近遇到的一個問題。如下:

貝拉克·奧巴馬(英語:Barack Obama,1961年8月4日-),是民主黨籍政治家,也是第44任美國總統,於2008年初次當選,並於2012年成功連任。1992年,奧巴馬和同學校的米歇爾·魯濱遜結婚,後育有兩個女兒。兩人供職於芝加哥的同一家律師事務所,之後撰寫完成了自傳體的回憶錄《父親的夢想》並在美國出版發行。

當然,需要抽取的不僅僅是奧巴馬這一條,還有成千上萬的李巴馬,王巴馬,孫巴馬等等的個人簡介。。。每一條的格式都不相同。

如何抽取出:姓名、年齡、職位、妻子、經歷等結構化的信息。

求解答!!!


Htmlparser


推薦閱讀:

現在有沒有好的TiDB實踐案例?
Hbase1.1.2的HTablePool已經被棄用,用什麼來代替HTablePool呢?
Kaggle的比赛和平时的数据分析有哪些区别?
像kaggle、datacastle、天池等大數據競賽,一般涉及哪些專業呢?
一道bat面試題:快速替換10億條標題中的5萬個敏感詞,有哪些解決思路?

TAG:大數據 |