【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)]"

结果已经没有了停用词,但仍有许多无意义的词,可以通过定义更多词典来进行去除。

猜你喜欢

转载自blog.csdn.net/Alexbyy/article/details/84871791