gpt4 book ai didi

Python:法语版 NLTK 和 TextBlob

转载 作者:行者123 更新时间:2023-12-01 03:19:27 25 4
gpt4 key购买 nike

我正在使用 NLTK 和 TextBlob 查找文本中的名词和名词短语:

from textblob import TextBlob 
import nltk

blob = TextBlob(text)
print(blob.noun_phrases)
tokenized = nltk.word_tokenize(text)
nouns = [word for (word, pos) in nltk.pos_tag(tokenized) if is_noun(pos)]
print(nouns)

如果我的文本是英文,则效果很好,但如果我的文本是法文,则效果不佳。

我无法找到如何将此代码改编为法语,我该怎么做?

是否有所有可以解析的语言的列表?

最佳答案

使用 NLTK 从法语句子中提取单词

在带有 Python3 的 WSL2 Ubuntu 下,我可以像这样下载 Punkt:

import nltk
nltk.download('punkt')

zip 存档已下载到:

/home/<em><i>my_username</i></em>/nltk_data/tokenizers/<b>punkt.zip</b>

解压后,您将获得许多存储为 Pickle 序列化对象的语言。

现在:

tokenizer = nltk.data.load('<em>path</em>/<em>to</em>/<em>punkt_folder</em>/<strong>french.pickle</strong>')

您可以使用tokenizer._tokenize_words方法:

words_generator = tokenizer._tokenize_words("Depuis huit jours, j'avais déchiré mes bottines Aux cailloux des chemins. J'entrais à Charleroi. - Au Cabaret-Vert : je demandai des tartines De beurre et du jambon qui fût à moitié froid.")
words = [word for word in words_generator]

words 是 PunktToken 的列表对象:

>>> words
[PunktToken('Depuis', type='depuis', linestart=True), PunktToken('huit', ), PunktToken('jours', ),... PunktToken('à', ), PunktToken('moitié', ), PunktToken('froid.', )]
>>> str_words = [str(w) for w in words]
>>> str_words
['Depuis', 'huit', 'jours', ',', 'j', "'avais", 'déchiré', 'mes', 'bottines', 'Aux', 'cailloux', 'des', 'chemins.', 'J', "'entrais", 'à', 'Charleroi.', '-', 'Au', 'Cabaret-Vert', ':', 'je', 'demandai', 'des', 'tartines', 'De', 'beurre', 'et', 'du', 'jambon', 'qui', 'fût', 'à', 'moitié', 'froid.']

使用nltk.pos_tag带有法语句子

OP想要使用nltk.pos_tag 。用前面描述的方法是不可能的。

一种方法似乎是安装已用 JAVA 编码的 Standford Tagger(在其他 SO question 中找到)

下载最新版本的 Standford Tagger ( Available here )

> wget https://nlp.stanford.edu/software/stanford-tagger-4.2.0.zip

解压后,您将得到一个如下所示的文件夹(OP询问可用语言列表):

...
├── data
│   ....
├── models
...
│   ├── arabic-train.tagger
│   ├── arabic-train.tagger.props
│   ├── arabic.tagger
│   ├── arabic.tagger.props
│   ├── chinese-distsim.tagger
│   ├── chinese-distsim.tagger.props
│   ├── chinese-nodistsim.tagger
│   ├── chinese-nodistsim.tagger.props
│   ├── english-bidirectional-distsim.tagger
│   ├── english-bidirectional-distsim.tagger.props
│   ├── english-caseless-left3words-distsim.tagger
│   ├── english-caseless-left3words-distsim.tagger.props
│   ├── english-left3words-distsim.tagger
│   ├── english-left3words-distsim.tagger.props
│   ├── french-ud.tagger
│   ├── french-ud.tagger.props
│   ├── german-ud.tagger
│   ├── german-ud.tagger.props
│   ├── spanish-ud.tagger
│   └── spanish-ud.tagger.props
─ french-ud.tagger.props
...
├── stanford-postagger-4.2.0.jar
...

必须安装 Java,并且您必须知道安装位置。现在您可以执行以下操作:

import os

from nltk.tag import StanfordPOSTagger
from textblob import TextBlob

jar = 'path/to/stanford-postagger-full-2020-11-17/stanford-postagger.jar'
model = 'path/to/stanford-postagger-full-2020-11-17/models/french-ud.tagger'
os.environ['JAVAHOME'] = '/path/to/java'

blob = TextBlob("""
Depuis huit jours, j'avais déchiré mes bottines Aux cailloux des chemins. J'entrais à Charleroi. - Au Cabaret-Vert : je demandai des tartines De beurre et du jambon qui fût à moitié froid.
""")

pos_tagger = StanfordPOSTagger(model, jar, encoding='utf8' )
res = pos_tagger.tag(blob.split())
print(res)

它将显示:

[('Depuis', 'ADP'), ('huit', 'NUM'), ('jours,', 'NOUN'), ("j'avais", 'ADJ'), ('déchiré', 'VERB'), ('mes', 'DET'), ('bottines', 'NOUN'), ('Aux', 'PROPN'), ('cailloux', 'VERB'), ('des', 'DET'), ('chemins.', 'NOUN'), ("J'entrais", 'ADJ'), ('à', 'ADP'), ('Charleroi.', 'PROPN'), ('-', 'PUNCT'), ('Au', 'PROPN'), ('Cabaret-Vert', 'PROPN'), (':', 'PUNCT'), ('je', 'PRON'), ('demandai', 'VERB'), ('des', 'DET'), ('tartines', 'NOUN'), ('De', 'ADP'), ('beurre', 'NOUN'), ('et', 'CCONJ'), ('du', 'DET'), ('jambon', 'NOUN'), ('qui', 'PRON'), ('fût', 'AUX'), ('à', 'ADP'), ('moitié', 'NOUN'), ('froid.', 'ADJ')]

瞧瞧!

关于Python:法语版 NLTK 和 TextBlob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com