精华内容
下载资源
问答
  • 中文语料库

    千次阅读 2017-06-22 17:04:40
    1. 语料库的类别: 语料库可分为生语料库和标注语料库。 标注语料库,如分词库,分词与词性标注库,树库,命题库,篇章树库。 中文分词库的目的是训练和测试汉语的自动分词系统,其他库的目的类似。 树库以...
    1. 语料库的类别:


    语料库可分为生语料库和标注语料库。
    标注语料库,如分词库,分词与词性标注库,树库,命题库,篇章树库。
    中文分词库的目的是训练和测试汉语的自动分词系统,其他库的目的类似。
    树库以句法结构信息为主要标注内容。
    命题库以谓词-论元结构信息为主要标注内容。
    篇章树库以篇章结构信息为主要内容。
    也有语料库可用于文本分类,主题检测(如搜狗文本分类语料库)。

    语料库可分为通用库和专用库。
    专用库如,科技语料库,北京口语语料库,中文地名标注语料库等。


    2. 部分公开发布的语料库的网址:

    1998年北京大学人民日报语料库:
    (中文分词语料库)

    LDC中文树库:
    网址http://www.cis.upenn.edu/~chinese/ctb.html,包含词性标注和句法标注。

    北京语言大学的语料库:

    清华大学的汉语均衡语料库TH-ACorpus:

    山西大学的语料库:  

    台湾中研院的语料库: 

    现代汉语平衡语料库: 

    近代汉语标记语料库:

    古汉语语料库:

    台湾南岛语典藏:

    闽南语典藏:

    汉籍电子文献:

    香港城市大学的 LIVAC 共时语料库:

    浙江师范大学的历史文献语料库:

    中国科学院计算所的双语语料库:

    中文语言资源联盟:http://www.chineseldc.org/xyzy.htm 
    展开全文
  • 复旦大学中文语料库的一些统计信息复旦大学的中文语料库分为训练集和验证集两部分,两部分的文档数量基本相等,但现在做测评一般都不采用这种预先划分的方法,而多用交叉验证,因此在将训练集与验证集合并之后,得到该...

    复旦大学中文语料库的一些统计信息

    复旦大学的中文语料库分为训练集和验证集两部分,两部分的文档数量基本相等,但现在做测评一般都不采用这种预先划分的方法,而多用交叉验证,因此在将训练集与验证集合并之后,得到该语料库的一些基本信息如下:

     

    类别总数量:20

     

     

    文档总数量:19637

     

     


    类别名称(类别代码):文档数量

     

     


    Agriculture(C32):2043篇

     

     


    Art(C3):1482篇

     

     


    Communication(C17):52篇

     

     


    Computer(C19):2715篇

     

     


    Economy(C34):3201篇

     

     


    Education(C5):120篇

     

     


    Electronics(C16):55篇

     

     


    Energy(C15):65篇

     

     


    Enviornment(C31):2435篇

     

     


    History(C7):934篇

     

     


    Law(C35):103篇

     

     


    Literature(C4):67篇

     

     


    Medical(C36):104篇

     

     


    Military(C37):150篇

     

     


    Mine(C23):67篇

     

     


    Philosophy(C6):89篇

     

     


    Politics(C38):2050篇

     

     


    Space(C11):1282篇

     

     


    Sports(C39):2507篇

     

     

    Transport(C29):116篇

     

    同时,在使用ictclas4j分词包对其进行的过程中,发现复旦语料库中存在一些文章会使得ictclas4j报错,其中因为分词包本身字库缺少某些文字,以及一些神秘的字符组合(确实很神秘)会导致分词过程出错,因此能够被成功分词而供后续使用的文档数并不如上面所列这么多,再后续的文章里,我会提供这些能够被分词的文档的相关数据,同时也会提供ictclas4j的一些小bug及解决方法的提示,可能的话,还会提供经过分词的可以直接使用的复旦语料库。
    展开全文
  • 本文介绍了银行疑问句(BQ)语料库,这是一种用于句子语义对等识别(SSEI)的中文语料库。 BQ语料库包含来自1年在线银行客户服务日志120,000个问题对。 为了有效地处理和注释来自如此大量日志问题,本文提出了一...
  • 语料库由复旦大学李荣陆提供。test_corpus.rar为测试语料,共9833篇文档;train_corpus.rar为训练语料,共9804篇文档,两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1比例来划分。(使用时尽量注明...
  • 做毕设自用的中文新闻文本分类语料库,整理自搜狗新闻和清华新闻语料,共八个类别,每类已分好4000条训练集和1000条测试集。附赠一份停用词表,综合了哈工大停用词及川大停用词。
  • 文本情绪分析研究近年来发展迅速,但相关的中文情绪语料库,特别是面向微博文本的语料库构建尚不完善。为了对微博文本情绪表达特点进行分析以及对情绪分析算法性能进行评估,该文在对微博文本情绪表达特点进行深入...
  • 文本分类(文本分类)是自然语言处理中的一个重要应用技术,根据文档的内容或主题,自动识别文档所属的预先定义的类别标签。文本分类是很多应用场景的基础,某些垃圾邮件识别,舆情分析,情感识别,新闻自动分类,...
  • 是测试集,训练集请见我资源 本语料库由复旦大学李荣陆提供。test_corpus.rar为测试语料,共9833篇文档;train_corpus.rar为训练语料,共9804篇文档,两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1...
  • 语料库由复旦大学李荣陆提供。训练语料和测试语料两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1比例来划分。使用时尽量注明来源(复旦大学计算机信息与技术系国际数据库中心自然语言处理小组)
  • 但几乎全部都是不能编译通过,有些是缺少xercesc文件夹,有些是缺少xerces-c_2_2_0D.dll,有些是缺少分词程序和数据导致分词程序初始化失败,还有缺少直接训练测试的语料库。 本人经过整理和编译测试,保证本...
  • 这个链接是训练集,本语料库由复旦大学李荣陆提供。test_corpus为测试语料,共9833篇文档;train_corpus为训练语料,共9804篇文档,两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1比例来划分。使用时...
  • 语料库由复旦大学李荣陆提供。test_corpus.rar为测试语料,共9833篇文档;train_corpus.rar为训练语料,共9804篇文档,两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1比例来划分。使用时尽量注明...
  • 语料库由复旦大学李荣陆提供。test_corpus.rar为测试语料,共9833篇文档;train_corpus.rar为训练语料,共9804篇文档,两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1比例来划分。使用时尽量注明...
  • 这个链接是训练集,本语料库由复旦大学李荣陆提供。test_corpus为测试语料,共9833篇文档;train_corpus为训练语料,共9804篇文档,两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1比例来划分。使用时...
  • 1、资源中有语料,本语料库由复旦大学李荣陆提供。test_corpus为测试语料,共9833篇文档;train_corpus为训练语料,共9804篇文档,两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1比例来划分。使用时...
  • 提取文本信息中文分词采用ansj中文分词工具,对预处理后数据进行分词建立训练语料自定义五个类别及其标签:0 运费、1 寄件、2 人工、3 改单、4 催单、5 其他业务类。 从原数据中挑选一部分作为训练语料和测试语料...

    数据预处理

    这里写图片描述

    原始数据如图所示,我们要提取用户的输入文本信息,即“日本件如何收费”
    首先过滤掉其他不含用户输入的文本行
    然后以特定字符“含中文”为切割
    提取文本信息

    中文分词

    采用ansj中文分词工具,对预处理后的数据进行分词

    建立训练语料

    自定义五个类别及其标签:0 运费、1 寄件、2 人工、3 改单、4 催单、5 其他业务类。
    从原数据中挑选一部分作为训练语料和测试语料
    这里写图片描述

    建立模型测试并保存

    import org.apache.spark.ml.classification.NaiveBayes
    import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
    import org.apache.spark.ml.feature.{HashingTF, IDF, LabeledPoint, Tokenizer}
    import org.apache.spark.ml.linalg.{Vector, Vectors}
    import org.apache.spark.sql.Row
    import org.apache.spark.{SparkConf, SparkContext}
    
    object shunfeng {
    
      case class RawDataRecord(label: String, text: String)
    
        def main(args : Array[String]) {
    
          val config = new SparkConf().setAppName("createModel").setMaster("local[4]")
          val sc =new  SparkContext(config)
          val sqlContext = new org.apache.spark.sql.SQLContext(sc)
          //开启RDD隐式转换,利用.toDF方法自动将RDD转换成DataFrame;
          import sqlContext.implicits._
    
          val TrainDf = sc.textFile("E:\\train.txt").map {
            x =>
               val data = x.split("\t")
               RawDataRecord(data(0),data(1))
           }.toDF()
          val TestDf= sc.textFile("E:\\test.txt").map {
            x =>
              val data = x.split("\t")
              RawDataRecord(data(0),data(1))
          }.toDF()
          //tokenizer分解器,把句子划分为词语
          val TrainTokenizer = new Tokenizer().setInputCol("text").setOutputCol("words")
          val TrainWords = TrainTokenizer.transform(TrainDf)
          val TestTokenizer = new Tokenizer().setInputCol("text").setOutputCol("words")
          val TestWords = TestTokenizer.transform(TestDf)
          //特征抽取,利用TF-IDF
          val TrainHashingTF = new HashingTF().setInputCol("words").setOutputCol("rawFeatures").setNumFeatures(5000)
          val TrainData = TrainHashingTF.transform(TrainWords)
          val TestHashingTF = new HashingTF().setInputCol("words").setOutputCol("rawFeatures").setNumFeatures(5000)
          val TestData = TestHashingTF.transform(TestWords)
    
          val TrainIdf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
          val TrainIdfmodel = TrainIdf.fit(TrainData)
          val TrainForm = TrainIdfmodel.transform(TrainData)
          val TestIdf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
          val TestIdfModel = TestIdf.fit(TestData)
          val TestForm = TestIdfModel.transform(TestData)
          //把数据转换成朴素贝叶斯格式
          val TrainDF = TrainForm.select($"label",$"features").map {
            case Row(label: String, features: Vector) =>
              LabeledPoint(label.toDouble, Vectors.dense(features.toArray))
          }
          val TestDF = TestForm.select($"label",$"features").map {
              case Row(label: String, features: Vector) =>
                LabeledPoint(label.toDouble, Vectors.dense(features.toArray))
            }
          //建立模型
          val model =new NaiveBayes().fit(TrainDF)
          val predictions = model.transform(TestDF)
          predictions.show()
          //评估模型
          val evaluator = new MulticlassClassificationEvaluator()
            .setLabelCol("label")
            .setPredictionCol("prediction")
            .setMetricName("accuracy")
          val accuracy = evaluator.evaluate(predictions)
          println("准确率:"+accuracy)
          //保存模型
          model.write.overwrite().save("model")
        }
    }

    模型评估:
    这里写图片描述
    这里写图片描述

    使用模型预测

    import org.ansj.recognition.impl.StopRecognition
    import org.ansj.splitWord.analysis.{DicAnalysis, ToAnalysis}
    import org.apache.spark.ml.classification.NaiveBayesModel
    import org.apache.spark.ml.feature._
    import org.apache.spark.sql.SparkSession
    import org.apache.spark.{SparkConf, SparkContext}
    
    object stest {
      case class RawDataRecord(label: String)
      def main(args: Array[String]): Unit = {
        val conf = new SparkConf().setMaster("local[4]").setAppName("shunfeng")
        val sc = new SparkContext(conf)
        val spark = SparkSession.builder().config(conf).getOrCreate()
        import spark.implicits._
        val frdd = sc.textFile("C:\\Users\\Administrator\\Desktop\\01\\*")
        val filter = new StopRecognition()
        filter.insertStopNatures("w") //过滤掉标点
        val rdd = frdd.filter(_.contains("含中文"))
          .filter(!_.contains("▃▂▁机器人丰小满使用指引▁▂▃"))
          .map(_.split("含中文")(0))
          .map(_.split("\\|")(3))
          .filter(_.length>1)
          .map{x =>
            val temp = ToAnalysis.parse(x.toString)
            RawDataRecord(DicAnalysis.parse(x.toString).recognition(filter).toStringWithOutNature(" "))
          }.toDF()
    
        val tokenizer = new Tokenizer().setInputCol("label").setOutputCol("words")
        val wordsData = tokenizer.transform(rdd)
    
        //setNumFeatures的值越大精度越高,开销也越大
        val hashingTF = new HashingTF().setInputCol("words").setOutputCol("rawFeatures").setNumFeatures(5000)
        val PreData = hashingTF.transform(wordsData)
    
        val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
        val idfModel = idf.fit(PreData)
        val PreModel = idfModel.transform(PreData)
        //加载模型
        val model =NaiveBayesModel.load("model")
         model.transform(PreModel).select("words","prediction").show()
    
      }
    
    }
    
    

    结果:

    这里写图片描述

    总结

    spark的ml库与mlib在使用上的区别还是挺大的,比如利用了mlib的库的模型就不能使用ml的Vectors,LabeledPoint,必须使用模型对应的数据类型,在导入包的时候尤其要小心。另外,对于分类结果的准确性,这里虽然很高,一部分程度由于源数据的数据种类较少,可识别度比较高,另一方面测试和训练语句较少,重复较多,如果想要提高预测准确度,训练语句很关键,其次就是中文分词工具的使用。

    ps:如有不足,欢迎批评指正

    展开全文
  • python 情感分析 语料

    2017-08-31 16:48:49
    中文情感词汇本体是大连理工大学信息检索研究室在林鸿飞教授指导下经过全体教研室成员努力整理和标注一个中文本体资源。该资源从不同角度描述一个中文词汇或者短语,包括词语词性种类、情感类别、情感强度及...
  • 爬取语料库利用爬虫爬取百度网页每个类别假新闻10页,共1000篇文章。爬取的类别如下: 数据预处理汇总把爬取到的10个txt文件都放在同一个文件夹下,利用程序将这10个txt文件合并在一起。把汇总的txt文件命名为...

    爬取语料库

    利用爬虫爬取百度网页每个类别假新闻10页,共1000篇文章。爬取的类别如下:

     

    数据预处理

    汇总

    把爬取到的10个txt文件都放在同一个文件夹下,利用程序将这10个txt文件合并在一起。

    把汇总的txt文件命名为result.txt。

    程序如下:

     file: FileMerage.py
    # os模块中包含很多操作文件和目录的函数
    import os
    # 获取目标文件夹的路径
    meragefiledir = os.getcwd() + '\\MerageFiles'
    # 获取当前文件夹中的文件名称列表
    filenames = os.listdir(meragefiledir)
    # 打开当前目录下的result.txt文件,如果没有则创建
    file = open('result.txt', 'w')

    # 先遍历文件名
    for filename in filenames:
        filepath = meragefiledir + '\\' + filename
        # 遍历单个文件,读取行数
        for line in open(filepath):
            file.writelines(line)
        file.write('\n')
    # 关闭文件
    file.close()

    汇总完后的数据如下:

     

    分词去停

    利用jieba分词将得到的result.txt文件进行分词去停。这里使用的停词表是哈工大停词表。

    import jieba
    stopwords={}.fromkeys([line.rstrip()for line in open('stopword.txt','r',encoding='UTF-8')]) #创建并返回一个新字典,
    jieba.add_word('原标题',1)
    a=open("result.txt",'r').read()
    segs=jieba.cut(a, cut_all=False)
    final=''
    for seg in segs:
        #seg=seg.encode('utf-8')
        if seg not in stopwords:
            final+=' '+seg
    print(final)
    fpath='F:/word2vec.txt'
    with open(fpath, 'a') as f:  # 写入到文本文件中
        f.write(str(final) + '\n')

    转换完后的数据如下:

     

    训练word2vec

    我们用gensim中的word2vec工具训练,在pycharm控制台运行如下命令:

    Python train_word2vec_model.py corpus_seg.txt corpus.model corpus.vector

    #  train_word2vec_model.py用于训练模型
    import logging
    import os.path
    import sys
    import multiprocessing
    from gensim.models import Word2Vec
    from gensim.models.word2vec import LineSentence
    if __name__=='__main__':
        program = os.path.basename(sys.argv[0]) #os.path.basename表示返回path最后的文件名;sys.argv[0]表示传递命令行参数,参数train_word2vec_model.py为argv[0]
        logger = logging.getLogger(program)
    logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
        logging.root.setLevel(level=logging.INFO) ##
        logging.info("running %s" % ' '.join(sys.argv)) #info表示打印,Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
        if len(sys.argv) < 4:
            print (globals()['__doc__'] % locals()) #全局变量,局部变量
            sys.exit(1)
        inp,outp,outp2 = sys.argv[1:4] #依次表示切割后的文本,模型,向量
        model = Word2Vec(LineSentence(inp),size=400,window=5,min_count=5,workers=multiprocessing.cpu_count()) #.window是句子中当前词与目标词之间的最大距离
        model.save(outp) #训练后的模型保存;# 以二进制格式存储
        model.wv.save_word2vec_format(outp2,binary=False) # 以文本格式存储, 一行是一个词的vector

    测试效果

    pycharm中输入python命令。

    接着依次输入:

    import gensim

    model = gensim.models.Word2Vec.load('corpus.model')

    result = model.most_similar(u'老人')

    for word in result:  print (word[0],word[1])

    输出如下:

     

     

     

     

    展开全文
  • 中文文本分类_预处理

    2020-04-07 00:36:29
    中文文本分类之数据预处理0 前期准备语料库停用词其他1 正则匹配* 针对搜狗语料xml正则匹配出内容和类别2 分训练集和测试集3 合并训练集4 jieba分词收尾 0 前期准备 语料库 我做中文新闻分类,新闻分类现有...
  • 因此,自己从网上找了一个中文语料库进行尝试。本文实践内容包括文件读取、中文分词、词向量表达、模型构建和模型融合。本文所采用语料库为复旦中文文本分类语料库,包含20个类别。但是,这个网盘里面只有...
  • 因此,自己从网上找了一个中文语料库进行尝试。本文实践内容包括文件读取、中文分词、词向量表达、模型构建和模型融合。 本文所采用语料库为复旦中文文本分类语料库,包含20个类别。但是,这个网盘里面只有...
  • 1.情感词典的构建方法: 手工标注,基于词典的方法 和 基于语料库的方法。 手工标注:准确率高,耗费时间和精力。 基于词典 和 基于语料的方法较多。 词语情感分析的难点:1.词语在不同的环境中产生的情感不同 ...
  • 在信息检索理论中,TF-IDF 是 Term Frequency - Inverse Document ...并且在语料库中其他文档中很少出现,即 DF 低,也即 IDF 高,则认为这个词具有很好的类别区分能力。 # -*- coding:utf-8 -*- import jieba.an
  • 语料库由复旦大学李荣陆提供。训练和测试两个语料各分为20个相同类别。训练语料和测试语料基本按照1:1比例来划分。使用时尽量注明来源(复旦大学计算机信息与技术系国际数据库中心自然语言处理小组)。
  • 语料库由复旦大学李荣陆提供。训练和测试两个语料各分为20个相同类别。训练语料和测试语料基本按照1:1比例来划分。使用时尽量注明来源(复旦大学计算机信息与技术系国际数据库中心自然语言处理小组)。
  • 通过定义类别聚类密度、类别复杂度以及类别清晰度三个指标,从语料库信息度量角度研究多种代表性的中文分词方法在隐含概率主题模型LDA下对文本分类性能影响,定量、定性地分析不同分词方法在网页和学术文献等...
  • 语料库由复旦大学李荣陆提供。 下载原始数据编码格式是gb18030,用python解析时报错,这个是用java将数据格式转为utf-8编码格式后结果。 train.zip共9804篇文档,test.zip共9832篇文档,都分为20个类别。 ...
  • 项目是以复旦大学中文语料库和路透社英文语料库为数据集,都是有类别的两层目录文本集。 不管你要做什么,你首先都要先读取文本,为了方便后面操作,我写了几个工具类,这里先将文本读取Reade

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

中文语料库的类别