Skip to content

JMbaozi/Text-analysis

Repository files navigation

本项目用于文本分析的基础学习。 如果你对此感兴趣,可以Star。

1.联系方式

2.内容来源

2.1 图书

2.2 文章

2.3 网络

3.主要内容


以《红楼梦》为例的简单应用

数据来源

  • 由红楼梦研究所校注、人民文学出版社出版的《红楼梦》以庚辰(1760)本《脂砚斋重评石头记》为底本,以甲戌(1754)本、已卯(1759)本、蒙古王府本、戚蓼生序本、舒元炜序本、郑振铎藏本、红楼梦稿本、列宁格勒藏本(俄藏本)、程甲本、程乙本等众多版本为参校本。下载链接
  • 网络下载的《红楼梦.txt》下载链接

分析工具

部分应用

1.分词

  • 代码
# encoding=utf-8
import jieba

seg_list = jieba.cut("_text", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 精确模式
  • 实例

    • “也想要到人间去享一享这荣华富贵。”经过分词后变为“也/想要/到/人间/去/享一享/这/ 荣华富贵。”;
    • “将一块大石登时变成一块鲜明莹洁的美玉”经过分词后变为“将/一块/大石/登时/变成/一块/鲜明/莹洁/的/美玉”;
    • “然后好携你到那昌明隆盛之邦、诗礼簪缨之族、花柳繁华地、温柔富贵乡去安身乐业。”经过分词后变为“然后/好/携/你/到/那/昌明/隆盛/之邦/ 、/诗礼/簪缨/之族/ 、/花柳/繁华/地/ 、/温柔/富贵/乡去/安身乐业/。”;
    • “原来女娲氏炼石补天之时,于大荒山无稽崖炼成高经十二丈、方经二十四丈顽石三万六千五百零一块。”经过分词后变为“原来/女娲/氏/炼石补天/之/时/,/于/大/荒山/无稽/崖/炼成/高经/十二/丈/、/方经/二十四丈/顽石/三万/六千五百/零/一块/。”。
  • 导入自定义词典

    jieba.load_userdict('dict.txt')
    • 以单个词导入
    jieba.add_word(word,freq = None,tag = None)
    • 实例
      import jieba
      
      data = "原来女娲氏炼石补天之时,于大荒山无稽崖炼成高经十二丈、方经二十四丈顽石三万六千五百零一块。"
      
      jieba.load_userdict('hlmdicttest.txt')
      cut_result = jieba.cut(data)
      print('=='*20)
      print('/'.join(cut_result))

    女娲氏炼石补天之时,于大荒山无稽崖炼成高经十二丈、方经二十四丈顽石三万六千五百零一块。”经过分词后变为“原来/女娲氏/炼石补天/之/时/,/于/大荒山/无稽崖/炼成/高经十二丈/、/方经二十四丈/顽石/三万/六千五百/零/一块/”

2.词性标注

import jieba.posseg as pseg
words = pseg.cut("_text")
for word, flag in words:
    print('%s %s' % (word, flag))
  • 实例
    • “你看看这玉上穿的穗子”: 你r看看v这r玉n上f穿v的uj穗子n
    • “那贾母见他两个都生了气,只说趁今儿那边看戏,他两个见了也就完了,不想又都不去。”: 那 r 贾母nr 见v他r两个m都d生v了ul气n ,x只说c趁p今儿t那边r看v戏n,x他r两个m见v了ul也d就d完v了ul,x不想v又d都d不d去v 。x
    • “一时宝钗、凤姐儿去了,黛玉笑向宝玉道:"你也试着比我利害的人了。谁都像我心拙口笨的,由着人说呢!"宝玉正因宝钗多了心,自己没趣,又见黛玉来问着他,越发没好气起来。待要说两句,又恐黛玉多心,说不得忍着气,无精打彩一直出来了。”: 一m时宝钗nr、x凤姐儿nr去v了ul,x黛玉笑nr向宝玉nr道 q:x"x你r也d试v着uz比p我r利害v的uj人n了ul。x谁r都d像v我心n拙ag口q笨a的uj,x由着c人n说v呢y!x"x宝玉nr正d因p宝钗nr多m了ul心s,x自己r没趣v,x又d见v黛玉nr来v问v着uz他r,x越发d没好气l起来v。x待v要说c两句m,x又d恐d黛玉nr多心n,x说不得l忍v着uz气n,x无精打彩i一直d出来v了ul。x

3.基于TF-IDF算法的关键词提取

  • 语句关键词提取

    • 代码

      #jieba.analyse.extract_tags(string,topK=20,withWeight=True,allowPOS=(" "))
      #string:待处理语句
      #topK:返回TF、IDF权重最大的关键字的个数,默认20
      #withWeight:是否返回权重值,默认false
      #allowPOS:是否仅返回指定类型,默认为空
      import jieba.analyse
      # 字符串前面加u表示使用unicode编码
      content = u'_test'
      keywords = jieba.analyse.extract_tags(content, topK=20,withWeight=True, allowPOS=())
      # 访问提取结果
      for item in keywords:
          print(item[0], item[1])
    • 实例

      “原来贾珍近因居丧,每不得游顽旷荡,又不得观优闻乐作遣.无聊之极,便生了个破闷之法. 日间以习射为由,请了各世家弟兄及诸富贵亲友来较射.因说:"白白的只管乱射,终无裨益,不但不能长进,而且坏了式样,必须立个罚约,赌个利物,大家才有勉力之心."因此在天香楼下箭道内立了鹄子,皆约定每日早饭后来射鹄子.贾珍不肯出名, 便命贾蓉作局家.这些来的皆系世袭公子,人人家道丰富,且都在少年,正是斗鸡走狗,问柳评花的一干游荡纨裤.因此大家议定,每日轮流作晚饭之主,----每日来射, 不便独扰贾蓉一人之意.于是天天宰猪割羊,屠鹅戮鸭,好似临潼斗宝一般,都要卖弄自己家的好厨役好烹炮.不到半月工夫,贾赦贾政听见这般,不知就里,反说这才是正理, 文既误矣,武事当亦该习,况在武荫之属.两处遂也命贾环,贾琮,宝玉,贾兰四人于饭后过来,跟着贾珍习射一回,方许回去.”

      关键词:由于文字较少,所以按权值占比选前五个 贾珍 0.2248850718385 每日 0.15875041022175002 问柳评花 0.11583898043333334 临潼斗宝 0.11583898043333334 纨裤 0.10428652742416666

  • 文本关键词提取

    • 代码

      from jieba.analyse import *
      with open('_test.txt',encoding = 'utf-8') as f:
          data = f.read()
      for keyword, weight in extract_tags(data, topK=10, withWeight=True):
          print('%s %s' % (keyword, weight))
    • 实例

      以 hongloumeng.txt为例

      关键词:取权值占比前十个 宝玉 0.11174015386450631 贾母 0.04096279485052852 凤姐 0.03679341393983838 王夫人 0.03238483108809296 老太太 0.029228577284745143 奶奶 0.025319232252404632 那里 0.024846723669342888 什么 0.024490410824605114 贾琏 0.02434048230267443 太太 0.024266427970154856

    • 自定义部分停用词

    from jieba.analyse import *
    import jieba
    stopwords = ['奶奶','那里','什么','姑娘','说道','众人','如今','一面','你们','袭人','只见']
    with open('hongloumeng.txt',encoding = 'utf-8') as f:
      data = f.read()
    for keyword, weight in extract_tags(data, topK=21, withWeight=True):
      tag = 1
      for i in range(11):
          if keyword == stopwords[i]:
              tag = 0
      if tag == 1: 
          print('%s %s' % (keyword,weight))

    结果:

    宝玉 0.11174015386450631 贾母 0.04096279485052852 凤姐 0.03679341393983838 王夫人 0.03238483108809296 老太太 0.029228577284745143 贾琏 0.02434048230267443 太太 0.024266427970154856 平儿 0.02184055288925734 宝钗 0.01920189352608345 黛玉 0.018863309330642977

other function

Waiting to be added


About

文本分析的基础学习

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published