精华内容
下载资源
问答
  • 高频词提取

    2020-03-03 14:49:20
    高频词一般指的是在文章中出现频率较高的且有意义的一些词语,一定程度上代表了文档的焦点所在。所以也可以将其当做关键词。 本文的分词工具使用了jieba分词。 首先,引入要用的包并且读取待处理的文档数据: import...

    高频词一般指的是在文章中出现频率较高的且有意义的一些词语,一定程度上代表了文档的焦点所在。所以也可以将其当做关键词。
    本文的分词工具使用了jieba分词。

    首先,引入要用的包并且读取待处理的文档数据:

    import glob
    import random
    import jieba
    def get_content(path):
        with open(path,'r',encoding='gbk',errors='ignore')as f:
            content=''
            for l in f:
                l=l.strip()
                content+=l
            return content
    

    然后定义高频词统计的函数,输入是一个词的数组。

    def get_TF(words,topK=10):
        tf_dic={}
        for w in words:
            tf_dic[w]=tf_dic.get(w,0)+1
        return sorted(tf_dic.items(),key=lambda x:x[1],reverse=True)[:topK]
    

    然后定义读取停用词表的函数:

    def stopwordslist(filepath):
        stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
        return stopwords
    

    主函数:

    def main():
        files=glob.glob('./data/news/C000013/*.txt')
        #glob.glob匹配所有的符合条件的文件,并将其以list的形式返回
        corpus=[get_content(x) for x in files]
        sample_inx=random.randint(0,len(corpus))
        stopwords=stopwordslist('./data/stop_words.utf8')
        split_words=[x for x in jieba.cut(corpus[sample_inx]) if x not in stopwords]
        
        
        print('样本之一:'+corpus[sample_inx])
        print('样本分词效果:'+'/'.join(split_words))
        print('前十个高频词:'+str(get_TF(split_words)))
    

    然后运行主函数main(),得到输出:

    样本之一:自2006418日起,金象大药房白塔寺药店将对1036个品种的药品价格进行下调。其中西药405种、中成药442种和保健品189种。遴选药品平均降幅为15%25%,有些品种的降幅达到了50%以上。此次降价的品种大部分是治疗常见病、多发病、慢性病的药品。不仅有国产药,也包括外资类药品和合资类药品。如:同仁堂科技发展股份生产的感冒清热颗粒,由原来的每盒14元降为每盒9.8元,降幅30%;中美上海施贵宝制药有限公司生产的日夜百服咛,由原来的每盒13.9元降为每盒11元,降幅20.86%;石药集团中诺药业生产的复方降压片,由原来的每盒5.2元降为每盒3元,降幅42.31%;辉瑞制药有限公司生产的络活喜片,由原来的每盒47.5元,降为每盒40.8元,降幅14.11%;北京大恒倍生制药厂生产的复方丹参片,由原来的每盒8.8元降为每盒2元,降幅77.27%;(德国)诺华制药生产的新山地明,由原来的每盒629.5元降为每盒560元,降幅11.04%。据北京金象大药房医药连锁有限公司董事长介绍,此次药品降价是企业强调要以保证药品质量、节约成本降低企业管理内耗的前提下实施的,是积极探讨细化管理、合理使用药学人员、提高工作效率来缩减成本让利于消费者的一种尝试,是履行企业“致力药业,护佑安康”使命的一种体现。实事求是地说,这次药品价格的调整降低了药店的利润空间,金象也是根据企业经营的实际状况经过仔细斟酌而推出的让利于民的销售价格。通过这一尝试,金象还将视实际的情况对其他门店的药品价格进行调整。据了解,金象与北京市其他几家本土品牌药店占据了六成左右的北京药品零售市场份额,像这样大规模的药品降价,对于这类品牌药店来说来是首次。相关链接:白塔寺药店:是以经营道地中药饮片、高档参茸滋补品、以及全国名、特、优、新中西药品和家庭医疗器械为主的大型综合药店,是一家具有135年经营历史的老字号药店,曾先后获得过“消费者满意商店”、“全国文明示范药店”、“货真价实”品牌体系成员店、“北京市首批优秀特色店”、“优良药房”等称号。白塔寺药店秉承金象复星医药股份有限公司“大众安康是金象复星经营的园点”的经营理念,坚持以优质齐全的品种,专业化的药学服务,舒适的购物环境为消费者提供全方位的服务。
    样本分词效果:2006///18/日起/金象/药房/白塔寺/药店/1036/品种/药品/价格/进行/下调/西药/405//中成药/442//保健品/189//遴选/药品/平均/降幅/15%//25%/品种/降幅/达到/50%/降价/品种/大部分/治疗/常见病/多发病/慢性病/药品/国产//包括/外资//药品/合资//药品/同仁堂/科技/发展/股份/生产/感冒/清热/颗粒/原来/每盒/14/元降/每盒/9.8//降幅/30%///上海/施贵宝/制药/有限公司/生产/日夜/百服//原来/每盒/13.9/元降/每盒/11//降幅/20.86%/石药集团/中诺/药业/生产/复方/降压片/原来/每盒/5.2/元降/每盒//降幅/42.31%/辉瑞/制药/有限公司/生产/络活/喜片/原来/每盒/47.5///每盒/40.8//降幅/14.11%/北京/大恒/倍生/制药厂/生产/复方/丹参片/原来/每盒/8.8/元降/每盒//降幅/77.27%/德国/诺华/制药/生产//山地//原来/每盒/629.5/元降/每盒/560//降幅/11.04%/北京/金象/药房/医药/连锁/有限公司/董事长/介绍/药品/降价/企业/强调/保证/药品/质量/节约/成本/降低/企业/管理/内耗/前提/实施/积极/探讨/细化/管理/合理/使用/药学/人员/提高/工作效率/缩减/成本/利于/消费者/一种/尝试/履行/企业/致力/药业/护佑/安康/使命/一种/体现/实事求是/地说/药品/价格/调整/降低/药店/利润/空间/金象/企业/经营/实际/状况/仔细/斟酌/推出/利于//销售价格/这一/尝试/金象//实际/情况/门店/药品/价格/进行/调整/了解/金象/北京市/几家/本土/品牌/药店/占据/六成/左右/北京/药品/零售/市场份额/大规模/药品/降价//品牌/药店/首次/相关/链接/白塔寺/药店/经营//中药饮片/高档/参茸/滋补品/全国/////中西/药品/家庭/医疗器械/为主/大型/综合/药店/一家/具有/135//经营/历史/老字号/药店/先后/获得/消费者/满意/商店/全国/文明/示范/药店/货真价实/品牌/体系/成员//北京市/首批/优秀/特色店/优良/药房/称号/白塔寺/药店/秉承/金象复//医药/股份/有限公司/大众/安康/金象复//经营/园点/经营/理念/坚持/优质/齐全/品种/专业化/药学/服务/舒适/购物/环境/消费者/提供/全方位/服务
    前十个高频词:[('药品', 12), ('每盒', 12), ('药店', 9), ('降幅', 8), ('元', 7), ('生产', 6), ('原来', 6), ('金象', 5), ('经营', 5), ('元降', 5)]
    
    展开全文
  • Jieba:高频词提取

    千次阅读 2019-03-23 09:31:52
    1、高频词定义 高频词是指文档中出现频率较高且非无用的词语,其一定程度上代表了文档的焦点所在。...高频词提取的干扰项: 1)标点符号 2)停用词:类似“的”,“是”,“了”等无意义的词。 ...

    1、高频词定义
    高频词是指文档中出现频率较高且非无用的词语,其一定程度上代表了文档的焦点所在。针对单篇文档可以作为一种关键词来看。对于如新闻这样的多篇文档,可以将其作为热词,发现舆论热点。
    高频词提取的干扰项:
    1)标点符号
    2)停用词:类似“的”,“是”,“了”等无意义的词。

    2、实战之高频词提取(使用Jieba)
    Github上高频词提取的代码

    输出:
    在这里插入图片描述
    根据实战结果发现,诸如“的”,“,”,“。”,“了”等词占据很高的位置,而这类词对把控文章焦点并无太大意义。我们需要的是能够简要概括重点的词汇。常用的方法:自定义一个停用词典,当遇到这些词时,过滤掉。

    整理常用的停用词(包括标点),按照每行一个写入到一个文件中。然后定义如下函数,用于过滤停用词:

    def stop_words(path):
        '''
        停用词,过滤无意义的词
        :param path:
        :return:
        '''
        with open(path, encoding='UTF-8') as f:
            return [l.strip() for l in f]
    

    输出:
    在这里插入图片描述
    这里的停用词典不是通用的,一般实践中需要根据自己的任务,定期更新维护。定制自己的领域词典,用以提升分词效果。Jieba提供了这样的功能,用户可以加载自定义词典:

    jieba.load_userdict('./data/user_dict.utf8')
    

    jieba要求用户词典格式为:
    朝三暮四 3 i
    大数据 5
    汤姆 nz
    公主坟
    每一行为三个部分:词语、词频(可省)、词性(可省),用空格隔开,顺序不可颠倒。该词典文件需为utf8编码。

    参考:《python自然语言处理实战 核心技术与算法》

    展开全文
  • 一、高频词汇提取简介 高频词一般是指文档中出现频率较高且...其中高频词提取其实就是自然语言处理中的TF(Term Frequency)策略。 二、数据集下载及算法介绍 数据集下载地址:https://github.com/nlpinaction/le...

    一、高频词汇提取简介

    高频词一般是指文档中出现频率较高且并非无用的词语,其一定程度上代表了文档的焦点所在。针对单篇文档,可以作为一种关键词来看。对于如新闻这样的多篇文档,可以将其作为热词,发现舆论的焦点。其中高频词提取其实就是自然语言处理中的TF(Term Frequency)策略。

    二、数据集下载及算法介绍

    数据集下载地址https://github.com/nlpinaction/learning-nlp

    算法介绍

    1、读取数据集中一篇或者多篇新闻作为分词提取高频词汇的样本数据集

    2、对于文章首先用jieba库中自带的分词函数对文章进行分词处理

    3、由于文章中的标点符号以及“的”, “是”, “了” 等常用词无任何意义,因此这些词是需要在进行统计高频词时进行删除处理的,对于上述问题需要利用一个停用字典(无意义词的一个文档集合)来过滤掉那些无意义的词以及标点符号。

    停用字典路径:https://github.com/nlpinaction/learning-nlp/blob/master/chapter-3/data/stop_words.utf8

    4、分好词之后需要做的是对词进行一个数量的统计,利用字典来模拟哈希表,构建一个字典存取每一个关键字的出现次数,然后通过排序取出你开始设置的最高的几个关键词。

    代码实现

    import jieba
    import glob
    import random
    
    class TopKFrequent(object):
        def __init__(self, k = 0):
            self.k = k
    
        def stop_words(self, path):
            with open(path, 'r', encoding='utf8') as f:
                return [l.strip() for l in f]
    
        def get_content(self, path):
            with open(path, 'r', encoding='gbk', errors='ignore') as f:
                content = ''
                for sample in f:
                    sample = sample.strip()
                    content += sample
                return content
    
        def get_TF(self, words):
            tf_dic = {}
            for word in words:
                tf_dic[word] = tf_dic.get(word, 0) + 1
            return sorted(tf_dic.items(), key=lambda x:x[1], reverse=True)[:self.k]
    
    
    if __name__ == '__main__':
        files = glob.glob(r'./learning-nlp-master/chapter-3/data/news/C000013/*.txt')
        res = TopKFrequent(10)
        corpus = [res.get_content(x) for x in files]
        random_index = random.randint(0, len(corpus))
    
        split_words = [x for x in jieba.cut(corpus[random_index]) if x not in res.stop_words(r'./learning-nlp-master/chapter-3/data/stop_words.utf8')]
        print(str(res.get_TF(split_words)))

     

    展开全文
  • 高频词提取(TF,Term Frequency),高频词指在文档中出现频率较高并且有用的词,关键点有两个:出现频率高、有用。 第一步 定义获取语料的函数 def getContent(path,encoding='gbk): with open(path, r, encoding=...

    高频词

    高频词提取(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)]"
    

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

    展开全文
  • NLP之高频词提取

    2020-10-13 13:10:22
    print('样本之一:'+corpus[sample_inx]) print('样本分词效果:'+'/ '.join(split_words)) print('样本的topK(10):'+str(get_TF(split_words))) main() Building prefix dict from the default dictionary .....
  • NLP:高频词提取

    2019-12-13 14:22:19
    import glob import jieba def get_content(path): with open(path,'r',encoding='gbk',errors='ignore') as f: content='' for l in f: l=l.strip() content+=l ...
  • g = WordCloud() g.add(series_name="热点分析", data_pair=tags, word_size_range=[6, 66]) g.set_global_opts( title_opts=opts.TitleOpts( title="高频词条", title_textstyle_opts=opts.TextStyleOpts(font_...
  • jieba分词和高频词提取示例代码

    千次阅读 2019-06-09 18:41:41
    # 高频词读取 TF/IDF content = "自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。" \ "因此,自然语言处理是与人机交互的领域有关的。在自然语言处理面临...
  • 任务:利用Jieba实现高频词提取。 首先在中找到并安装jieba(已安装好) 然后直接使用即可。 Jieba有很多种模式(cut\cut_for_search\lcut\lcut_for_search),本次使用后两种(全模式和搜索引擎模式)。  ...
  • 功能大概如下,以C#做界面,python为内部程序。 这个程序的缺陷是只能提取前10个,以及暂时没搞懂怎么去去掉停用。但是比起之前的中文分词程序,可以选择导入的EXE文件位置了。 ...
  • jieba分词器是Python中最好的中文分词组件,本文讲解...2、全模式:将句子当中所有可以成的词语都扫描出来,分词速度很快但容易产生歧义; 3、搜索引擎模式:在精确模式分词的基础上,将长的句子再次进行切分,...
  • jieba分词器是Python中最好的...2、全模式:将句子当中所有可以成的词语都扫描出来,分词速度很快但容易产生歧义;3、搜索引擎模式:在精确模式分词的基础上,将长的句子再次进行切分,提高召回率,适用于搜索引擎...
  • 在大量文字中搜索高频词汇是信息搜索和数据压缩的共通课题。这次智慧擂台请大家在一个比较庞大的英文文本中找出M个数量最多的短语(由N个单词组成)。统一处理相同的文本文件,该文本只包含英文单词、空格和回行符,...
  • 用来提取excel中非结构数据的高频词汇,可自定义高频词长度以及出现频率,仅限于中文。将所需分析数据粘贴到D:D列即可。
  • 今晚小折腾了一下在cygwin下用Python和jieba分词(结巴分词)组件给文本分词并提取高频词,过程记录如下:目的分析某行业中,用户最关心的一些需求,再根据这一需求去调整站内TDK,以及一些频道、内容的规划过程1、...
  • importjava.io.*;importjava.util.*;classtt{publicStringphrase;publicintcount;}publicclasssearchphrase{privatestaticLinkedHashMapphrase=newLinkedHashMap();statictt[]max_phrase;privatestaticVectorSep...
  • 目的:分析某个行业(例如:圆柱模板)用户最关心的一些,根据需求去自动调整TDK,以及栏目,内容页的规划使用方法:1、下载安装cygwin:http://www.cygwin.com/2、cygwin安装时别忘记安装curl,wget,iconv,lynx,...
  • 提取文章高频词

    千次阅读 2016-12-06 12:47:44
    ## 选取reg_no, bus_scope,根据 bus_scope 切词,添加停用,自定义词典 停用(日期) 括号里,分情况 def word_cut (newdata) : stoplist = [line.strip().decode( 'utf-8' ) for line in open( '...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 140
精华内容 56
关键字:

高频词提取