Ho 30.000 articoli in francese in un file JSON. Vorrei eseguire alcune analisi del testo su entrambi i singoli articoli e sul set nel suo complesso. Prima di andare oltre, sto iniziando con semplici obiettivi:Come posso taggare e tagliare il testo francese usando NLTK e Python?
- identificare le entità importanti (persone, luoghi, concetti)
- Trova cambiamenti significativi nel importanza (~ = frequenza) di quelle entità nel corso del tempo (usando il numero di sequenza articolo come un proxy per volta)
i passi che ho preso finora:
importati i dati in una lista python:
import json json_articles=open('articlefile.json') articlelist = json.load(json_articles)
selezionato un singolo articolo per verificare, e concatenate il corpo del testo in una singola stringa:
txt = ' '.join(data[10000]['body'])
Loaded una frase tokenizzatore francese e dividere la stringa in una lista di frasi:
nltk.data.load('tokenizers/punkt/french.pickle') tokens = [french_tokenizer.tokenize(s) for s in sentences]
Ha tentato di dividere le frasi in parole usando il WhiteSpaceTokenizer:
from nltk.tokenize import WhitespaceTokenizer wst = WhitespaceTokenizer() tokens = [wst.tokenize(s) for s in sentences]
Questo è dove mi sono bloccato, per i seguenti motivi:
- NLTK non dispone di un tokenizzatore built-in che può dividere francese in parole. Lo spazio bianco non funziona bene, in particolare perché non si separa correttamente sugli apostrofi.
- Anche se dovessi usare le espressioni regolari per dividere in singole parole, non c'è PoS francesi (parti del discorso) tagger che posso usare per contrassegnare quelle parole, e non c'è modo per loro pezzo in unità logiche di senso
per l'inglese, ho potuto contrassegnare e pezzo il testo in questo modo:
tagged = [nltk.pos_tag(token) for token in tokens]
chunks = nltk.batch_ne_chunk(tagged)
miei principali opzioni (in ordine di preferenza corrente) sembrano essere:
- Usa nltk-trainer per addestrare i miei tagger e chunker.
- Utilizzare il wrapper python per TreeTagger solo per questa parte, poiché TreeTagger è già in grado di taggare il francese e qualcuno ha scritto un wrapper che chiama il file binario TreeTagger e analizza i risultati.
- Utilizzare uno strumento diverso.
Se dovessi fare (1), immagino che avrei bisogno di creare il mio corpus etichettato. È corretto o sarebbe possibile (e premesso) utilizzare la Treebank francese?
Se il formato corpuscolo francese Treebank (example here) non è adatto per l'uso con nltk-trainer, è possibile convertirlo in tale formato?
Quali approcci hanno gli utenti di lingua francese NLTK portati al tag PoS e al testo del blocco?
+1 WordPunctTokenizer. Se c'è una Treebank francese, allora è probabilmente una grande risorsa per addestrare un tagger pos. E se è necessario creare un lettore di corpus personalizzato, sono sicuro che NLTK sarebbe felice di includerlo. Una volta fatto ciò, nltk-trainer supporta la specifica di un lettore di corpus personalizzato. – Jacob
Grazie Alexis e Jacob. Non so di un corpus di francese con tag esistente, quindi probabilmente proverò prima TreeTagger. Come dici tu, probabilmente è più facile che scrivere un corpus reader personalizzato per leggere French Treebank. Grazie per il suggerimento ri: la mailing list di nltk-users. Ho letto alcuni post precedenti sull'archivio web, ma avevo dimenticato di iscrivermi. – Rahim