1. 程式人生 > >【NLP學習筆記】用jieba實現高頻詞提取

【NLP學習筆記】用jieba實現高頻詞提取

高頻詞

高頻詞提取(TF,Term Frequency),高頻詞指在文件中出現頻率較高並且有用的詞,關鍵點有兩個:出現頻率高、有用。

第一步

  1. 定義獲取語料的函式
def getContent(path,encoding='gbk):
    with open(path, r, encoding=encoding, errors='ignore') as f:
        content = ''
        for line in f:
           #去除空行
            line = line.strip()
            content +=
line return content
  1. 定義切分語料的函式
#jieba是一箇中文分詞工具。
import jieba
def cut(content):
    split_words = list(jieba.cut(content))
    return split_words 
  1. 定義統計高頻詞的函式
def get_TF(words, topK=10):
    tf_dic = {}
    #遍歷words中的每個詞,如果這個詞在tf_dic中出現過,則令其加一。
    for w in words:
        tf_dic[
w] = tf_dic.get(w, 0) + 1 #將字典tf_dic排序後取出前topK. return sorted(tf_dic.items(), key = lambda x: x[1], reverse=True)[:topK]

以下面語料庫為例:

  萬絡給止痛藥市場帶來的陰霾久久仍未散去,但這絲毫不能說明該市場的需求在減少。在既定的需求現實下,COX-2抑制劑的衰落,必然引來趁虛而入者。不久前我國河南帥剋制藥和貴州益佰先後宣稱將倚靠新的止痛藥進入該領域,一場“分羹”之戰顯然已經急促展開。
  潛力巨大的鎮痛藥市場一直是跨國公司的天下,而最近它們的優勢地位正經受挑戰,其緣由是2004年8月份王牌止痛藥萬絡爆出安全性問題引發了市場對新型非甾體止痛藥的不信任感。
  去年9月萬絡自動撤出我國後騰出了巨大的市場空間,引起了眾多企業的覬覦,去年5月13日,中美史克曾經發起“霞光行動”,試圖從困境中挽救其OTC王牌藥芬必得,但更多的國內企業則儘量避開身處安全性危機旋渦中的COX-2抑制劑領域,希望從新的鎮痛領域入手找到征戰止痛藥市場的新武器。
  不久前我國河南帥剋制藥和貴州益佰先後宣稱將倚靠新的止痛藥進入這個潛力僅次於感冒藥的新領域,據帥剋制藥董事長張克軍透露,帥克開發的止痛新葯氨酚曲馬多片即將上市。據記者瞭解,該產品也是今年西安楊森力推的重點產品。而貴州益佰方面則透露,該公司將憑藉一種止痛中藥來分切國內巨大的止痛藥市場。
  顯然,一場新的止痛藥市場“分羹”大戰已經打響。
  止痛藥市場依然是金礦
  分析人士指出,儘管目前使用最多的COX-2抑制劑正遭遇安全性危機,但對於整個止痛藥並不構成影響,此事件的最大可能是各大類止痛藥由此進行一輪市場替代,而與此同時,整個市場還在繼續增長。
  中國已經步入老齡化社會,中老年人口約有5億。風溼和類風溼關節炎、肩周炎、頸椎病、骨質增生等疾病在老年甚至中年人群中屬於常見病、多發病,各類疼痛病症患者約佔中老年群體的65%,而且這一群體數量還在不斷的增加。
  另外,隨著我國製造業大國地位的不斷提升,產業工人數量急劇膨脹,長期的勞作容易導致各種機體勞損和關節疼痛,因此,該群體已經成為疼痛藥物消費的另一個大群體。由於電腦等工具的引入,人們的工作和生活方式已經發生了根本的改變,長期的靜坐催生了這一人群各種疼痛的出現,這是導致疼痛人群增長的又一個重要因素。
  據IMS國際諮詢公司預測,2005年,全球止痛劑市場總量達800億美元以上。目前,美國、歐洲和日本是全球最大的止痛藥市場,過去30年來止痛藥市場銷售額一直在穩步上升。國內的資料也顯示:我國非處方藥市場上止痛藥增長迅速,其銷售僅次於感冒藥,大約佔到了20%的比例。
  與此同時,目前醫學更加註重病人的生活質量,對患各種疾病引起的疼痛的治療也催生了新的止痛藥市場。以癌症疼痛為例,
  據我國衛生部統計資料顯示,20世紀90年代我國腫瘤發病率已上升為127例/10萬人。近年來我國每年新增腫瘤患者160萬~170萬人,死於惡性腫瘤人數達140萬人,腫瘤患者總數估計在450萬人左右。腫瘤患者中至少有1/3存在著不同程度的疼痛,其中晚期患者佔60%~90%。
  市場加速洗牌
  由於止痛藥使用領域及其廣泛,所以各類藥物的使用不能一概而論,但就醫院處方板塊分析,目前主要有四大類鎮痛藥,分別為阿片類鎮痛藥、非甾體類鎮痛藥、植物類鎮痛藥以及抗偏頭痛製劑。非甾體類鎮痛藥原本是被寄予了厚望,在萬絡以及西樂葆等一批新型藥物的帶動下整個市場發展趨勢非常喜人。1998年,全國14個典型城市入網醫院的非甾體抗炎藥購藥金額為9903.3萬元,到2002年已經增長至14022.3萬元(見表1)。
  不過由於非甾體類鎮痛藥的安全性問題,其市場有逐漸下滑的趨勢,而阿片類藥物則有上升的勢頭,相互市場取代現象比較明顯。以使用較多的癌症鎮痛為例,在2002~2004年樣本醫院鎮痛類藥物使用情況(見表2)中,阿片類鎮痛藥的市場分額由2002年的62.4%上升到2004年的68.4%。而非甾體類鎮痛藥的份額卻從2002年的34.4%下跌至2004年的29.2%。
  在阿片類鎮痛藥中,目前主要由曲馬多、芬太尼和嗎啡3大品種領銜,這三大品種佔整個阿片類藥品使用金額的70%以上(見附圖)。
  芬太尼為人工合成的非衍生物類阿片藥片,屬於強阿片類鎮痛藥,WHO將它歸入第三階梯鎮痛藥,其主要通過激動阿片類受體(μ受體)而發揮鎮痛作用,止痛作用為相同劑量嗎啡的50~100倍。嗎啡主要用於晚期癌症患者第三階梯止痛。從市場趨勢來看,曲馬多增長後勁十足,該產品是胺苯環醇類人工合成弱阿片類藥物,鎮痛強度在同等劑量時,相當於嗎啡的1/5,但明顯強於其他非類固醇抗炎藥,適用於中、重度癌性疼痛,被WHO列為癌痛三階梯止痛治療的第二階梯推薦藥物。該藥與阿片受體的親和力比嗎啡弱6000倍,基本不存在成癮性,可以長期使用,因此在治療劑量下,不產生呼吸抑制,不影響心血管功能,也不產生便祕、排尿困難等不良反應。由於該藥的管制相對較鬆,除可以用於癌症疼痛的治療外,還可以在骨關節炎、腰椎間盤突出症、肩關節周圍炎、創傷、手術後疼痛和骨質疏鬆症所致的腰腿痛中使用。該類藥在醫保目錄中屬乙類藥物,目前癌痛臨床應用中多為緩釋片。
  複合使用藥物增長勢頭明顯
  目前鎮痛藥市場還有一個明顯的趨勢就是越來越強調聯合用藥,根據2005年前三季度典型醫院用藥情況顯示,一些複合使用的藥物增長勢頭明顯,像氨基比林+安替比林+巴比妥,克痛寧+曲馬多+布洛芬,羥考酮+對乙醯氨基酚等。
  張克軍也認為,鑑於止痛新葯不斷遭受安全性問題,複方用藥將是鎮痛藥今後新產品開發的一個重要方向,一些新型的複方產品正顯示良好的市場前景,目前選擇的重點就是將一些原來在臨床使用多年,療效確切,安全性高的藥組合在一起。像最近上市的氨酚曲馬多片就是由阿片類和非甾體類使用最久的鹽酸曲馬多和對乙醯氨基酚組合在一起的複方產品,臨床研究證實該藥主要用於緩解中度及重度疼痛,起效迅速,鎮痛效果明顯,無成癮性,不良反應相比其單方製劑和其他參比製劑明顯更低,該產品2001年8月在美國由FDA批准上市。西安楊森在去年將該藥引進我國,目前正在力拓市場。鑑於該產品在我國無相關產權保護,河南帥剋制藥在國內企業中搶先仿製了這個產品。張克軍透露,該產品目前已經上市,有望培養成為一個鎮痛藥的大品種,或許依靠新型複方製劑可以參與重新劃分止痛藥市場的格局。

對上面語料執行以上三個函式後得到:

樣本的topk(10)詞:[(',', 102), ('的', 76), ('0', 44), ('。', 40), ('2', 27), ('市場', 24), ('在', 21), ('止痛藥', 17), ('鎮痛藥', 15), ('1', 14)]

可以看出結果裡有很多無用的詞,比如‘,’ ‘的’,‘。’等等。接下來我們定義去除停用詞的函式。

#獲取停用詞
def stop_words(path):
    with open(path) as f:
        return [l.strip() for l in f]
#修改cut函式,path是你的停用詞表所放的位置
def cut(content,path):
    split_words = [x for x in cut(content) if x not in stop_words('path)]
    return split_words 

去除停用詞後的結果:

"[('0', 44), ('2', 27), ('市場', 24), ('止痛藥', 17), ('鎮痛藥', 15), ('1', 14), ('4', 12), ('使用', 12), ('疼痛', 12), ('年', 11)]"

結果已經沒有了停用詞,但仍有許多無意義的詞,可以通過定義更多詞典來進行去除。