python实现分词器

简介: python实现分词器

在Python中实现分词有很多方法,具体取决于你的应用场景和数据。下面我会介绍一种常用的分词库——jieba。如果你的数据是英文,你也可以使用nltk库。

中文分词

使用jieba进行中文分词:

首先,你需要安装jieba库。如果还未安装,请在命令行输入以下命令:

pip install jieba

使用下面的代码进行分词

import jieba  
  
sentence = "我来到北京清华大学"  
words = jieba.cut(sentence)  
print(' '.join(words))

运行以上代码,输出结果为:“我 来 到 北京 清华大学”

jieba.cut`方法返回的是一个可迭代的generator,也可以直接在for循环中使用它。

英文分词

首先,需要安装nltk库。如果还未安装,请在命令行输入以下命令

pip install nltk

然后使用下面的代码进行分词:

import nltk  
  
sentence = "I am going to the park"  
words = nltk.word_tokenize(sentence)  
print(words)

运行以上代码,输出结果为:['I', 'am', 'going', 'to', 'the', 'park']

注意:对于nltk库,如果你的数据是英文,可以直接使用nltk.word_tokenize方法;如果是中文,需要先下载并使用nltk.download('punkt')来下载英文分词器。

多种语言分词

使用spacy可以完成多国语言分词

spacy官网

安装spacy(时间微长)

pip install spacy

安装字典这里以英文中文为例,其他参考官网

#中文
python -m spacy download zh_core_web_sm
#英文
python -m spacy download en_core_web_sm

分词(判断是不是一个句子)

def is_a_word(lang_code, text):
    print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>is_a_word")
    print(lang_code)
    if lang_code.lower() == "en":
        nlp = spacy.load("en_core_web_sm")  # 加载英文模型
    elif lang_code.lower() == "zh":
        nlp = spacy.load("zh_core_web_sm")  # 加载中文模型
    elif lang_code.lower() == "fr":
        nlp = spacy.load("fr_core_news_sm")  # 加载法语模型
    elif lang_code.lower() == "de":
        nlp = spacy.load("de_core_news_sm")  # 加载德语模型
    elif lang_code.lower() == "es":
        nlp = spacy.load("es_core_news_sm")  # 加载西班牙语模型
    elif lang_code.lower() == "it":
        nlp = spacy.load("it_core_news_sm")  # 加载意大利模型
    else:
        print("输入了非法的语言Code")
        return False
    doc = nlp(text)
    tokens = [token.text for token in doc]
    return len(tokens) == 1 and tokens[0] == text


相关文章
|
10月前
|
自然语言处理 BI
|
自然语言处理
HanLP分词工具中的ViterbiSegment分词流程
本篇文章将重点讲解HanLP的ViterbiSegment分词器类,而不涉及感知机和条件随机场分词器,也不涉及基于字的分词器。因为这些分词器都不是我们在实践中常用的,而且ViterbiSegment也是作者直接封装到HanLP类中的分词器,作者也推荐使用该分词器,同时文本分类包以及其他一些自然语言处理任务包中的分词器也都间接使用了ViterbiSegment分词器。
1062 0
|
自然语言处理
Ansj与hanlp分词工具对比
一、Ansj1、利用DicAnalysis可以自定义词库: 2、但是自定义词库存在局限性,导致有些情况无效:比如:“不好用“的正常分词结果:“不好,用”。 (1)当自定义词库”好用“时,词库无效,分词结果不变。
1061 0
HanLP-分类模块的分词器介绍
最近发现一个很勤快的大神在分享他的一些实操经验,看了一些他自己关于hanlp方面的文章,写的挺好的!转载过来分享给大家!以下为分享原文(无意义的内容已经做了删除)如下图所示,HanLP的分类模块中单独封装了适用分类的分词器,当然这些分词器都是对HanLP提供的分词器的封装。
5951 0
|
自然语言处理 Python 开发工具
[日常]Beyond的歌里最多是"唏嘘"吗? - Python分词+词频
用结巴分词分析Beyond歌词, 得出词频统计.
1106 0
|
自然语言处理 算法 测试技术
分词工具Hanlp基于感知机的中文分词框架
结构化感知机标注框架是一套利用感知机做序列标注任务,并且应用到中文分词、词性标注与命名实体识别这三个问题的完整在线学习框架,该框架利用
2043 0
|
自然语言处理 算法
中文分词算法工具hanlp源码解析
词图指的是句子中所有词可能构成的图。如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B)。一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图。
1672 0
|
自然语言处理 算法 Java
pyhanlp 中文词性标注与分词简介
如果想要只获取词性也是可以的,因为原分词器返回的是Java中的ArrayList属性,list中的每个单元都是一个term类,因此我们也可以通过获取term中的word字段来直接获取词语,或者nature属性,直接获取词性。这一特征,我们在之后也会用到。
4440 0
|
人工智能 自然语言处理 算法
hanlp源码解析之中文分词算法详解
词图指的是句子中所有词可能构成的图。如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B)。一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图。
2836 0

热门文章

最新文章