NLTK中英文分词下载配置与实例学习

根据最近jieba分词的使用情况,对于英文句子的分词方式,整体感觉不如NLTK,因此通过本文具体记录NLTK如何安装,配置和基本的案例学习,实现了分词、词性标注、NER、句法分析、用户自定义分词方式等功能,供参考;同时由于nltk_data资源太大,下载速度太慢,这里也提供给大家,供研究使用。

1.安装NLTK,命令:pip install nltk

2.下载:直接从这里下载nltk_data资源,地址:https://download.csdn.net/download/hhue2007/86912857

3.解压:解压到当前文件夹后,将nltk_data拷贝到nltk能够识别到的任意一个路径下。

4.nltk能够识别的路径查找方法如下:

import nltk

print(nltk.find('.'))

5.进入nltk_data\tokenizers目录,解压punkt到当前文件夹

6.开始正常使用。NLTK的典型示例如下:

#coding:utf8
"""
Description:nltk分词操作详解
Author:hh by 2022-10-31
Prompt: code in Python3 env
Install:pip install nltk
""" 
import nltk
from nltk.tokenize import MWETokenizer
from nltk.corpus import stopwords
from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters
# print(nltk.find('.')) 
def cut_sentences_en(content):
    punkt_param = PunktParameters()
    abbreviation = ['i.e.', 'dr', 'vs', 'mr', 'mrs', 'prof', 'inc','99/22','North China Sea']  # 自定义的词典
    punkt_param.abbrev_types = set(abbreviation)
    tokenizer = PunktSentenceTokenizer(punkt_param)
    tokenizer._params.abbrev_types
    sentences = tokenizer.tokenize(content)
    return sentences
if __name__=='__main__':
    #********************1 nltk中文分词基本操作***********************************
    print('='*40)
    str="Geological Final Well Report Well LH35-13-1 Block 99/22,我来自北京大学"
    token_list=nltk.word_tokenize(str)
    print("\n1.分词: ", "$ ".join(token_list))

    taged_list=nltk.pos_tag(token_list)
    print("\n2.词性标注: ", taged_list)

    #NER需要利用词性标注的结果
    ners = nltk.ne_chunk(taged_list)
    print("\n3.实体识别(NER): ", ners)

    entity_list=nltk.chunk.ne_chunk(taged_list)
    print("\n4.句法分析: ", entity_list)

    str2='Geological Final Well Report Well LH35-13-1 Block 99/22, North China Sea,LH35-13-1 GEOLOGICAL COMPOSITE LOG,Geological Final Well Report'
    tokenized_string = nltk.word_tokenize(str2)
    mwe = [('Geological','Final','Well','Report','Well'),('99/','22'),('North','China','Sea'),('GEOLOGICAL','COMPOSITE','LOG')] # 添加这个短语(phrase)
    mwe_tokenizer = nltk.tokenize.MWETokenizer(mwe)
    result = mwe_tokenizer.tokenize(tokenized_string)
    print("\n5.用户自定义分词: " + "/ ".join(result))
    print('\n6.用户自定义分词(简称):',cut_sentences_en(str2))

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,让我们来介绍一下如何使用 NLTK 和 jieba 进行中英文分词和词性标注。 首先,我们需要安装 NLTK 和 jieba。可以在命令行中使用以下命令安装: NLTK:`pip install nltk` jieba:`pip install jieba` 接下来,我们可以使用 NLTK 中的 `pos_tag()` 函数和 jieba 中的 `posseg` 模块来分别进行英文和中文的词性标注。 对于英文,我们可以使用 NLTK 中的 `pos_tag()` 函数,示例代码如下: ```python import nltk nltk.download('punkt') nltk.download('averaged_perceptron_tagger') text = "This is a sample English sentence." tokens = nltk.word_tokenize(text) pos_tags = nltk.pos_tag(tokens) print(pos_tags) ``` 输出结果: ``` [('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('sample', 'JJ'), ('English', 'JJ'), ('sentence', 'NN'), ('.', '.')] ``` 其中,`pos_tag()` 函数的输入是一个被分词后的单词列表,返回值是一个元组列表,每个元组包含单词和对应的词性标注。 对于中文,我们可以使用 jieba 中的 `posseg` 模块,示例代码如下: ```python import jieba.posseg as pseg text = "这是一个样例中文句子。" words = pseg.cut(text) for word, flag in words: print(word, flag) ``` 输出结果: ``` 这 r 是 v 一个 m 样例 n 中文 nz 句子 n 。 x ``` 其中,`pseg.cut()` 函数的输入是一个中文句子,返回值是一个生成器,每次迭代产生一个元组,包含分词和对应的词性标注。 需要注意的是,中文分词和词性标注的准确性受到语料库的影响。可以使用已有的语料库,也可以根据自己的需求创建和使用语料库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一望无际的大草原

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值