文本切分及jieba分词应用(1)

为获得文本数据的有价值信息,我们需要将文本数据进一步细分为语句和词汇。文本切分技术包括句子切分和词汇切分,句子切分一般用标点符号来直接切分,词汇切分则是每个句子进一步分解成词汇。接下来,我们将重点讨论一下词汇切分,词汇切分也是我们常说的中文分词

一、中文分词概述

中文分词是指将连续的中文文本切分成有意义的符合语言习惯的词汇序列的过程。由于中文写作时不像英文那样在单词之间有明显的空格分隔,中文分词成为中文自然语言处理中的一项基础且关键的技术。正确的分词结果对于后续的文本处理任务,如词性标注句法分析情感分析等,都有着至关重要的影响。
目前中文分词还是一个难题——对于需要上下文区别的词以及新词(人名、地名等)很难完美的区分。国际上将同样存在分词问题的韩国、日本和中国并称为CJK(Chinese Japanese Korean),三国的文字也被称为统一汉字,并赋予其在ISO 10646及统一码标准中有相同编码。

二、语料库和词典

2.1 语料库

2.1.1 语料库简介

语料库是自然语言处理和计算语言学研究中使用的大型文本数据库,包含了大量真实语言材料的集合,用于语言模型训练、语言学研究和各种语言处理任务的开发和测试。
常用语料库包括:

  • 搜狗实验室提供的新闻语料:覆盖广泛的新闻文本。
  • 中文维基百科语料:中文维基的所有条目,适合进行语义相关的研究。
  • 人民日报语料库:涵盖多年的人民日报文章,经常用于词性标注和句法分析研究。
  • THUCNews:清华大学提供的新闻分类语料库,常用于文本分类任务。

2.1.2 语料库标注

语料库一般是由人工标注的,如果只是学习,我们可以借助已标注好的语料库,进行模型训练等,语料库越大,训练效果也会越好。因为模型训练是依据已标注好的语料,因此,语料库的准确性对训练结果影响也很大。语料库标注一般包含分词识别、词性识别、命名实体识别等。接下来,我们重点看下语料库中分词的标注。
分词语料库中每个字都一个标识(隐藏状态),标识当前字在这个词语的位置,然后可以根据语料库得到所有标识形成一个序列。语料库中的分词标识包含B、M、E、S四种,释义如下:
B(Begin):词语开始
M(Middle):词语中间
E(End):词语结束
S(Single):单独成词
例如:我喜欢看热辣滚烫这个电影
这句话分词结果为:我 喜欢 看 热辣滚烫 这个 电影
则这句话的标识序列为:S BE S BMME BE BE
这样,我们可以根据已分好的词得到每个字的状态,这就是语料库标注;同时,我们也可以根据大量语料库中每个字的状态,运用HMM模型进行训练,预测我们待切分文本的分词结果。

2.2 词典

2.2.1 词典简介

词典是指的是一个包含词语及其相应信息的库或文件,整体上和我们日常用的字典在结构上很是相似的,它用于辅助中文文本分词和语义分析。词典定义通常包括以下信息:

  • 词语:词典中包含的中文词语,如单字词、词组、专有名词等。
  • 词性:每个词语的词性,例如名词、动词、形容词、副词等,有些词典还可能包括更详细的细分词性。
  • 频率信息:有些词典可能包含词语的频率信息,用于帮助语言处理系统更好地理解语言使用中的词语偏好和使用频率。
  • 义项:针对一词多义的词语,词典可能包含相应的义项信息,用于消歧和语义分析。
  • 其他信息:例如拼音、词语的词义解释、词语的相关词汇搭配等附加信息。
    中文分词常常依赖于有效的词典定义来辅助分析和理解中文文本。常见的中文分词词典如下:

2.2.2 知网Hownet

知网(Hownet)是一个基于概念网络的词汇知识库,旨在帮助计算机理解和处理自然语言。知网包含中文和英文两个版本词库,分别有6个类别。知网的应用范围包括自然语言处理、信息检索、智能问答系统等。它不仅可以帮助计算机理解和分析文本,还可以支持词义消歧、情感分析、信息抽取等任务。通过整合人类的词汇知识和语义关系,Hownet为计算机提供了一种有效的方式来理解和处理自然语言。
在这里插入图片描述

2.2.3 THUOCL

THUOCL(THU Open Chinese Lexicon)是由清华大学自然语言处理与社会人文计算实验室整理推出的一套高质量的中文词库,目前包含11个类别。词表来自主流网站的社会标签、搜索热词、输入法词库等。THUOCL具有以下特点:

  1. 包含词频信息值DF(Document Frequency),数字越大表示词语在语料库中的越常见。
  2. 词库经过多轮人工筛选,保证词库收录的准确性。
  3. 开放更新,将不断更新现有词表,并推出更多类别词表。
    该词库可以用于中文分词、词性标注、实体识别、情感分析等自然语言处理任务中。
    在这里插入图片描述

2.2.4 李军中文褒贬义词典

李军中文褒贬义词典由清华大学计算机学院的李军教授及其研究团队开发的情感分析词典。该词典通过人工标注大量中文词语的情感极性,并结合大规模的中文文本语料库进行构建的,将汉语词汇划分为褒义词和贬义词(negative词汇4470个,positive词汇5568个),并广泛应用于自然语言处理的情感分析、舆情监控、品牌口碑分析等领域,对于分析文本中的情感色彩和情感倾向具有重要作用。
在这里插入图片描述

2.2.5 台湾大学NTUSD

台湾大学NTUSD,又被称为台湾大学情感词汇本体库,是由台湾大学的文学院,以及计算机科学与信息工程学院的研究团队合作开发的情感分析词库(negative词汇8276个,positive词汇2810个),它包含简体版和繁体版。这个词库是为了支持中文文本情感分析和相关研究而开发的,它包含了大量中文词语以及这些词语的情感极性信息,用于帮助分析文本中的情感色彩。NTUSD 以新闻、微博、论坛等大规模中文文本语料为基础,通过人工标注和自动化方法建立了包含情感信息的词库。
在这里插入图片描述

2.2.6 大连理工情感词典

大连理工大学情感词典是由大连理工大学信息检索研究室开发的用于情感分析的中文词典。这个词典从不同角度描述一个中文词汇或者短语,包括词语词性种类情感类别情感强度极性等信息。该词典情感共分为7大类21小类。
构造该资源的宗旨是在情感计算领域,为中文文本情感分析和倾向性分析提供一个便捷可靠的辅助手段。中文情感词汇本体可以用于解决多类别情感分类的问题,同时也可以用于解决一般的倾向性分析的问题。
在这里插入图片描述

三、中文分词方法

在做文本挖掘的时候,首先要做的预处理就是分词,中文分词的方法有以下几种:
基于词典的分词方法:首先构建一个词典,然后通过匹配词典中的词来进行分词。当遇到词典中没有的新词时,则采用其他方法进行处理。
基于规则的分词方法:通过设置一些规则,如词的长度、词的频率、词的位置等,来进行分词。
基于统计的分词方法:通过分析文本中的词语出现的频率和位置等信息,利用统计模型进行分词。
基于机器学习的分词方法:利用机器学习算法来构建分词模型,通过训练数据来学习词语的分布规律,然后利用该模型对新的文本进行分词。
基于深度学习的分词方法:利用深度学习算法,如循环神经网络(RNN)、卷积神经网络(CNN)等,来学习中文分词的模式和规律。
除上述五种方法,还有基于词典与统计相结合的方法,比如jieba分词,不同的分词方法适用于不同的场景和任务,选择合适的分词方法需要根据具体需求进行评估和选择。
接下来我们来讨论一下基于词典的分词方法和jieba分词方法。

3.1 基于词典的分词方法

基于词典的分词方法主要通过预定义的词典来匹配和切分中文文本,这种方法的优点是实现简单,对于标准文本具有较高的切分准确性。但其缺点也是显而易见的,首先,依赖于词典的完整性和更新,如果词典的质量、容量和广度不够,则会对分词结果造成影响,如“打击了”就很有可能被切分为“打击/了”,失去了应该表达的含义。其次,词典词汇切分不能对歧义问题进行有效的处理,比如,“羽毛球拍卖完了”这句话,在词汇切分的过程中,就可能出现以下的两种不同的切分的方式:情况1:羽毛球拍/卖/完/了。情况2:羽毛球/拍卖/完/了。再次,可能对新词、专有名词识别不足。
基于词典的分词方法主要包括正向最大匹配(FMM)、逆向最大匹配(BMM)和双向最大匹配(BiMM)。

3.1.1 正向最大匹配(FMM)

从左向右取待切分文本的MaxLen个字符作为匹配字段,MsxLen为所用词典中最长词条个数。查找词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。
具体流程图如下:
在这里插入图片描述
Python实现正向最大匹配算法示例:

# 正向最大匹配算法
def forward(text, word_dict, max_len):
    result_f = []
    start_index = 0
    while start_index < len(text):
        matched = False
        # 尝试匹配的最大长度不应超过文本剩余部分
        for end_index in range(min(len(text), start_index + max_len), start_index, -1):
            potential_word = text[start_index:end_index]
            if potential_word in word_dict:
                result_f.append(potential_word)
                start_index = end_index
                matched = True
                break
        if not matched:
            # 如果没有匹配到,则返回单个字符
            result_f.append(text[start_index])
            start_index += 1
    return result_f

# 示例
word_dict = {'我们', '在野', '生动', '动物园', '野生'}
text = "我们在野生动物园玩"
max_len = max(len(word) for word in word_dict)  # 最大词长度
result_f = forward(text, word_dict, max_len)
print(f'正向最大匹配结果:{result_f}')

3.1.2 逆向最大匹配(BMM)

从右向左取待切分汉语句的MaxLen个字符作为匹配字段,MaxLen为词典中最长词条个数。查找词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。**逆向最大匹配算法在处理中文往往会比正向要准确,**因为它能有效减少因前缀相似导致的错误匹配。
具体流程图如下:
在这里插入图片描述
Python实现逆向最大匹配算法示例:

# 逆向最大匹配算法
def backward(text, word_dict, max_len):
    result_b = []
    end_index = len(text)
    while end_index > 0:
        matched = False
        for start_index in range(max(0, end_index - max_len), end_index):
            potential_word = text[start_index:end_index]
            if potential_word in word_dict:
                result_b.append(potential_word)
                end_index = start_index
                matched = True
                break
        if not matched:
            result_b.append(text[end_index-1])
            end_index -= 1
    return result_b[::-1]

# 示例
word_dict = {'我们', '在野', '生动', '动物园', '野生'}
text = "我们在野生动物园玩"
max_len = max(len(word) for word in word_dict)
result_b = backward(text, word_dict, max_len)
print(f'逆向最大匹配结果:{result_b}')

3.1.3 双向最大匹配(BiMM)

同时使用正向最大匹配法和逆向最大匹配法进行分词,然后比较两种方法的结果,根据某种标准(如分词数量、自由度)选择较优的一个。双向最大匹配结合了两者的优点,但计算量更大。
比较规则:
1、如果正反向分词结果词数不同,则取分词数量较少的那个。
2、如果分词结果词数相同:
a.分词结果相同,就说明没有歧义,可返回任意一个。
b.分词结果不同,返回其中单字较少的那个。
Python实现双向最大匹配算法示例:

# 双向最大匹配算法
def bi_directional_max_match(text, word_dict):
    # 正反向分词结果词数不同,则取分词数量较少的那个
    if len(result_f) != len(result_b):
        return result_f if len(result_f) < len(result_b) else result_b
    # 分词结果词数相同,分词结果相同
    else:
        if result_f == result_b:
            return result_f
        # 分词结果词数相同,分词结果不同,返回其中单字较少的那个
        else:

            fmm_single_chars = sum(1 for word in result_f if len(word) == 1)
            bmm_single_chars = sum(1 for word in result_b if len(word) == 1)
            return result_f if fmm_single_chars < bmm_single_chars else result_b
# 示例
word_dict = {'我们', '在野', '生动', '动物园', '野生'}
text = "我们在野生动物园玩"
print(f'双向最大匹配结果:{bi_directional_max_match(text, word_dict)}')
### 回答1: 大连理工大学情感词典(DLUT)是一个由该大学开发的情感分析工具。它基于自然语言处理技术,旨在帮助用户分析和理解文本中的情感倾向。这个词典收集并整理了丰富的情感词汇,包括积极、消极和中性的词汇。 通过DLUT,用户可以输入一段文本,例如一篇文章、一条微博或一句话,该工具会自动分析其中的情感倾向,并返回一个相应的评分结果,以表示文本的情感色彩。具体而言,DLUT将文本分解为句子和单词,然后使用情感词典中的词汇进行匹配和计算。通过计算每个词汇对情感倾向的影响,DLUT可以将文本的情感程度量化为积极或消极情感得分。 DLUT的应用非常广泛。例如,它可以用于舆情监测,帮助企业了解人们对他们产品或品牌的态度和情感倾向。此外,它还可以用于社交媒体分析,帮助人们洞察用户评论、推文或讨论的情感色彩。在学术界,DLUT也为研究人员提供了一个有力的工具,帮助他们对情感语言进行深入研究。 总之,大连理工大学情感词典(DLUT)是一个方便实用的情感分析工具,利用自然语言处理技术帮助用户理解文本中的情感倾向。它的应用范围广泛,对舆情研究、社交媒体分析和学术研究都有着重要意和价值。 ### 回答2: 大连理工大学情感词典(dlut)是一本由大连理工大学编写的情感词典。该词典旨在帮助人们更好地理解和表达情感,提供情感词汇的释和用法。 大连理工大学作为一所知名的高等院校,拥有众多优秀的学者和研究团队。他们深入研究人类情感的本质和表达方式,借助大量的实证研究和教学经验,编写了这本情感词典。 在dlut中,词条的内容涵盖了各种不同情感的表达,例如喜悦、悲伤、愤怒、焦虑等,还包括了更为复杂的情感状态,如幸福、害怕、羞愧等。每个词条都提供了相应情感的定、示例句和其他相关的用法说明,帮助读者更好地理解每个词汇的语和使用背景。 使用dlut可以帮助人们更准确地表达自己的情感,并更好地理解他人的情感。词典中的例句和解释能够为读者提供参考,使他们在情感表达中更加地丰富和准确。此外,通过使用情感词典,人们可以更好地理解和应对自己内心的情感体验,有助于提升个人情绪管理和心理健康。 总的来说,大连理工大学情感词典(dlut)是一本丰富、准确的情感词典,它不仅能够帮助人们提升情感表达的能力,也对个人情绪管理和心理健康有着积极的影响。 ### 回答3: 大连理工大学情感词典(DLUT)是一部用于研究情感领域的词典。该词典主要包括对情感词汇的定、分类和使用方式等信息。该词典的编写旨在提供一个可靠的情感词汇资源,以帮助研究者更好地理解和分析人类情感。 大连理工大学情感词典通过系统的分类和筛选,将情感词汇划分为积极情感、消极情感和中性情感等不同类别。每个词汇都有详细的解释和使用例句,使研究者能够准确地了解其含和情感表达方式。 该词典应用范围广泛。在情感研究领域,DLUT可用于分析文本中的情感倾向、情感强度等情感特征,帮助研究者深入研究情感表达和情感传播的机制。此外,DLUT还可应用于情感识别、情感计算等技术领域的开发,并可在情感分析、用户评论和舆情监测等实践中得到应用。 大连理工大学情感词典的编写依据大量的实证研究,兼顾了中文语境和文化特点。其积极情感词汇的编写准确度和中性情感词汇的丰富性方面,具有一定的优势。然而,如同任何词典一样,情感词典也存在一定的主观性和不完善之处,需要不断更新和完善。 总而言之,大连理工大学情感词典是一部重要的情感研究工具,为情感研究提供了基础性资源。通过其准确的定和丰富的内容,DLUT有助于加深我们对情感及其表达方式的理解,推动情感研究的深入发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值