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官网
https://spacy.io/
安装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 Falsedoc = nlp(text)tokens = [token.text for token in doc]return len(tokens) == 1 and tokens[0] == text