更新:其實這篇部落格我本意是不想再寫了,因為這篇的思路真的太偏研究了,不能直接上手應用。按說我這個部落格瀏覽量很低,不過還是有那麼一些人在看,當時我在做這一部分的時候相關資料也真的很少,所以我還是準備把這個再完善下,新增了一種可以快速上手的方法,這種方法我自己做了測試,效果還不錯,但是後來這個專案缺少投資不再開發了,所以我也沒有再繼續完善它了。
最近在做的專案提出了個需求,僅以此文記錄。
舉例:給出的售假人員張三,他所在的公司有位合夥人李四,李四同時還經營多家公司,爬取張三的基本資訊,再根據所爬取到的張三所在公司,爬取關聯人員——李四。由李四出發,爬取李四相關的公司。
需求:網頁爬取到相關聯公司誤報率較高,需降低誤報率。目前所使用確認關聯演算法:搜尋待確認公司,若其與張三出現在同一頁面,認為該公司為關聯公司。但有可能存在廣告頁等,該公司可能僅僅在網頁上打廣告。
目前思路:1、爬取天眼查等公司資訊公示**,從而得到公司資訊。優點:準確率高。缺點:天眼查反爬蟲做的太好了…… 2、使用文字分析方法,進行關係提取。優點:方便操作。缺點:技術難度較高
如果有別的朋友也做這方面的研究歡迎交流哇!
目前主流的關係提取方法包括基於神經網路、深度學習的提取方法。貼幾個參考鏈結方便學習。
主流方法介紹
文獻綜述
現有的關係提取方法包括有監督學習方法、半監督學習方法、無監督學習方法和開放式抽取方法。
有監督的學習方法包括基於規則的、基於特徵的與基於核函式的方法。
無監督實體關係抽取方法無需依賴實體關係標註語料,其實現包括關係例項聚類和關係型別詞選擇兩個過程。
半監督實體關係抽取方法從包含關係種子的上下文中總結出實體關係序列模式,然後利用關係序列模式去發現更多的關係種子例項,形成新的關係種子集合。重複上述過程,迭代得到實體關係例項和序列模式。
開放式實體關係抽取能避免針對特定關係型別人工構建語料庫,可以自動完成關係型別發現和關係抽取任務。
整個過程可以分為內容過濾、分段、分句、實體關係抽取幾部分。
內容過濾:利用html標籤提取內容,匹配keyword所在的父標籤的全部文字。這樣一來可以過濾掉很多不相干資訊。
分段:分段主要有兩種思路,一是直接按文字內容中的\n\r進行分割,二是匹配公司名稱,按公司名稱進行分割。因為我的訴求是廣告頁去重,所以對我來說第二種方法的準確率更高,可以完美的得到我想要的keyword所在公司的內容,剔除其他不相關公司
分句:現有的各種nlp工具都提供了分句功能,nltk提供的tokenize方法就很好用,其他的工具我就沒有再嘗試了
實體關係抽取:stanford nlp的教程網上很多,它提供的句法依存分析功能可以很好的對文字進行分析,形成樹形結構,從而得到聯絡人與公司之間的關係,完美解決了我的訴求。我最近在做的知識圖譜也需要提取關係,所以我最近嘗試了很多任務具,pyltp也很好用。
爬蟲資料去重問題
布隆過濾器 安裝命令 pip install pybloom live 使用步驟 1 安裝 2 建立布隆過濾器 3 向過濾器中新增字串,驗證過濾器輸出結果 例 import pybloom live f pybloom live.bloomfilter capacity 10000,error ra...
python爬蟲去重策略 爬蟲去重策略
1 使用scrapy自帶的set集合去重,當程式結束的時候會被清空,缺點 再次執行會導致資料重複。2 使用mysql做去重,對url位址進行md5,base64加密,加密之後會得到一串字元,判斷字串 是否在mysql表中,如果在表示已經爬取過了,如果不在,表示沒有爬取,執行請求,將加密後的url 3...
python爬蟲去重策略 爬蟲去重策略
下面我會從程式 資料庫等幾個層面詳細敘述一下相應的去重策略。程式層面,像十萬以下url的抓取可以簡單的用set來實現去重。如果是百萬或者千萬量級的話,考慮到效能,我們應該使用基於hash的set實現去重。知道了前面雜湊的知識,你肯定就懂這是為什麼了。雜湊使得我們並不需要對比超長的url以及param...