学习过程记录

SKLearn 自带数据集位置

机器看不懂人类的自然语言,若要机器“读懂”自然语言,则需要将其转换为机器可识别的符号,比如"0"和"1",且这种转换的过程中需要最大限度保留自然语言特有的语义特征,这是一个很有难度的任务。一种常见的文本表示方法 --- 称为词袋模型,即Bag-of-Words)

还有很多不同的文本表示方法,比如TF-IDF、LSA、LSI、LDA、HDP、NMF、Word2vec等。但是,请记住,不同的应用场景需要不同的文本特征,没有百试不爽的方法
主题模型和文本数据转换(Topics and Text Data Transformation),是词袋模型(Bag-of-Words)的基础上做的进一步文本特征提取。

文本数据转换是将自然语言转换为机器易于理解的“语言”。转换成机器容易理解的语言就是说“机话”,变成一连串由阿拉伯数字构成的字符串,且这些字符串尽量保留原来人类语言的语义。
掌握了主题模型和文本数据转换以后,我们可以进行后面比较复杂且实用的文本挖掘应用了,比如文本相似度检索、文本聚类、文本分类等

如何将文档从一个向量表示(Vector Representation )是转换为另一个向量表示。在此过程中,会涉及到两个目标:

  • 挖掘语料库中潜藏的结构,发现词汇之间的关联性。词袋模型/表示并不能很好的挖掘语料中的词序特征(语句中词汇的先后顺序)和语义特征(上下文、词性搭配等),进行文本数据转换后则可以一种更加反映语义相关性的方式来表征文档,以提高后续文本聚类、文本分类等高阶文本挖掘应用的效果。
  • 使文档表示更紧凑。 这既提高了效率(新的文档表示会消耗更少的计算资源,转换过程会更快),也提升了效果(边际数据的趋势被忽略,也就是语料中的超低频和超高频词汇对语料的影响被削弱,从而达到数据降噪的目的,更能抓住文本中的重要特征)。

不同的转换可能需要不同的初始化参数 --- 在TF-IDF的情境下,“训练”仅包括通过一次性提供语料库并计算其所有特征的文档频率,模型不需要额外设置参数。 训练其他文本转换模型,比如潜在语义分析模型(Latent Semantic Analysis,LSI)或隐含狄利克雷分布模型(Latent Dirichlet Allocation),可能复杂很多,会涉及更多的参数设置,同时也需要更多的时间进行训练。

注意:
(文本数据)转换总是在两个特定的向量空间(Two Specific Vector Spaces)之间进行。 必须使用相同的向量空间(即同一组特征id)进行模型训练和后续的向量转换。 如果不能使用相同的输入特征空间(Input Feature Space),例如使用不同的字符串进行预处理,或者使用不同的特征ID,抑或本应使用TF-IDF向量却采用词袋表示来输入向量,这些“误操作”将产生转换期间的特征不匹配,进而导致错误的运行结果或产生异常。

文本特征提取是文本挖掘中非常重要的一个环节,无论是聚类、分类还是相似度任务,都需要提取出较好的文本特征,如此才能取得较好的结果。(文本的特征其实就是词)

文本特征提取方法,比如ELMO、BERT等

在NLP中获得最先进的结果曾经是一项艰巨的任务。为此,我们要不厌其烦的尝试各种文本特征抽取方法:TF-IDF、n-gram、word2vec、将其链接到外部知识库、词干化、归一化乃至分词。。。自从有了BERT,文本特征抽取的手工活就少多了

机器学习的一个重要部分,就是给特定任务找到好的特征表示(Feature Representation)。对于NLP领域的特征抽取来说,特征抽取特值文本表示(Text Representation)。简而言之,文本表示就是不将文本视为字符串,而视为在数学上处理起来更为方便的向量。如何将字符串变为包含语义关联性的向量,就是文本表示的核心问题。
可以利用sklearn中的TF-IDF文本特征提取器提取文本特征

当我们想从特定文档中了解其关键信息时,很容易想到的方法就是关键词提取(Keyword Extraction)。从学术定义上讲,关键词提取是提取与给定文本(语句/段落/篇章/文档)最相关的词汇、短语的自动化过程。
抽取关键词的python开源库有Gensim、Rake和YAKE,一般用tf-idf、topicrank等方法来提取关键词和关键短语。然而,这些模型通常是基于文本的统计学属性( Statistical Properties)工作的,而不是基于上下文语境的语义相似性(Semantic Similarity)来提取的具有归纳、凝练作用的词汇。
但BERT(Bi-directional transformer model)的横空出世,逐渐改变这一现状!它是一个双向transformer模型,可克服RNN(包括LSTM、GRU)不能捕捉长跨度语义依赖关联的弱点,可以很好的对文本的上下文语义信息进行建模。

文本挖掘/自然语言处理

posted @ 2021-11-15 23:30  jjsgxty  阅读(97)  评论(0编辑  收藏  举报