У меня есть 30 000 + статей на французском языке в файле JSON. Я хотел бы выполнить некоторый текстовый анализ как по отдельным статьям, так и по множеству в целом. Прежде чем идти дальше, я начинаю с простых целей:
- Определение важных объектов (людей, мест, концепций)
- Найти значительные изменения в важности (~ = частота) этих объектов с течением времени (используя порядковый номер статьи в качестве прокси для времени)
Шаги, которые я сделал до сих пор:
-
Импортированные данные в список python:
import json json_articles=open('articlefile.json') articlelist = json.load(json_articles)
-
Выбрал одну статью для проверки и объединил основной текст в одну строку:
txt = ' '.join(data[10000]['body'])
-
Загрузил французский токенизатор предложения и разделил строку на список предложений:
nltk.data.load('tokenizers/punkt/french.pickle') tokens = [french_tokenizer.tokenize(s) for s in sentences]
-
Попытка разделить предложения на слова с помощью WhiteSpaceTokenizer:
from nltk.tokenize import WhitespaceTokenizer wst = WhitespaceTokenizer() tokens = [wst.tokenize(s) for s in sentences]
Здесь я застреваю по следующим причинам:
- NLTK не имеет встроенного токенизатора, который может разделить французский на слова. Белое пространство плохо работает, особенно из-за того, что он не будет правильно разделять на апострофы.
- Даже если бы я использовал регулярные выражения для разделения на отдельные слова, там не было метки тегов французского PoS (частей речи), которые я могу использовать для пометки этих слов, и никоим образом не помещать их в логические единицы значения.
Для английского языка я могу пометить и вырезать текст так:
tagged = [nltk.pos_tag(token) for token in tokens]
chunks = nltk.batch_ne_chunk(tagged)
Мои основные параметры (по порядку текущих предпочтений) выглядят следующим образом:
- Используйте nltk-trainer, чтобы обучить мой собственный теггер и chunker.
- Используйте оболочку python для TreeTagger только для этой части, так как TreeTagger уже может пометить французский язык, а кто-то написал оболочку, которая вызывает двоичный файл TreeTagger и анализирует результаты.
- Использовать другой инструмент в целом.
Если бы я должен был сделать (1), я предполагаю, что мне нужно будет создать свой собственный тегированный корпус. Правильно ли это, или было бы возможно (и преданно) использовать французский Treebank?
Если форматы French Treebank corpus (здесь здесь) не подходят для использования с nltk-trainer, возможно ли преобразовать его в такой формат?
Какие подходы имеют франкоязычные пользователи NLTK к тегу PoS и фрагменту текста?