python - 如何使用 NLTK 和 Python 标记和分块法语文本?

标签 python nlp nltk

我在一个 JSON 文件中有 30,000 多篇法语文章。我想对个别文章和整篇文章进行一些文本分析。在我走得更远之前,我先从简单的目标开始:

  • 识别重要实体(人、地点、概念)
  • 发现这些实体的重要性(~=频率)随时间的显着变化(使用文章序列号作为时间的代表)

到目前为止我采取的步骤:

  1. 将数据导入 python 列表:

    import json
    json_articles=open('articlefile.json')
    articlelist = json.load(json_articles)
    
  2. 选择了一篇文章进行测试,并将正文文本连接成一个字符串:

    txt =  ' '.join(data[10000]['body'])
    
  3. 加载法语句子分词器并将字符串拆分为句子列表:

    nltk.data.load('tokenizers/punkt/french.pickle')
    tokens = [french_tokenizer.tokenize(s) for s in sentences]
    
  4. 尝试使用 WhiteSpaceTokenizer 将句子拆分为单词:

    from nltk.tokenize import WhitespaceTokenizer
    wst = WhitespaceTokenizer()
    tokens = [wst.tokenize(s) for s in sentences]
    

这就是我卡住的地方,原因如下:

  • NLTK 没有可以将法语拆分成单词的内置分词器。空白效果不佳,尤其是因为它无法正确分隔撇号。
  • 即使我要使用正则表达式拆分成单个单词,也没有法语 PoS(词性)标记器可用于标记这些单词,也无法将它们分 block 为逻辑意义单元

对于英语,我可以像这样标记和分 block 文本:

    tagged = [nltk.pos_tag(token) for token in tokens]
    chunks = nltk.batch_ne_chunk(tagged)

我的主要选择(按当前偏好排序)似乎是:

  1. 使用nltk-trainer训练我自己的标注器和词 block 划分器。
  2. 仅在这部分使用 TreeTagger 的 python 包装器,因为 TreeTagger 已经可以标记法语,并且有人编写了一个包装器来调用 TreeTagger 二进制文件并解析结果。
  3. 完全使用不同的工具。

如果我要执行 (1),我想我需要创建自己的标记语料库。这是正确的,还是可以(并允许)使用 French Treebank?

如果 French Treebank 语料库格式( example here )不适合与 nltk-trainer 使用,是否可以将其转换为这种格式?

NLTK 的法语用户对 PoS 标签和 block 文本采取了哪些方法?

最佳答案

还有带有 Python 包装器的 TreeTagger(支持法语语料库)。这是我目前正在使用的解决方案,效果非常好。

关于python - 如何使用 NLTK 和 Python 标记和分块法语文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9663918/

相关文章:

Python Pandas Merge --- 哪些行没有合并?

python - sklearn 如何使用多个保存的模型合并和预测数据

python - 无法在 Mountain Lion 上安装 numpy

python - 将条件变量与 nltk 的索引模块一起使用

Python turtle 颜色未正确填充

python - 如果所有行都包含 NaN、[](空列表)或 {}(空字典),则删除列

python - PyParsing:Combine() 有什么作用?

java - Java中的SparkNLP情感分析

python-3.x - Sklearn - NLTK 问题预测

python - 如果在时间范围内,则更改列的值