在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官网
Models & Languages · spaCy Usage Documentation
安装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