Voici comment obtenir le nombre de fréquences pour toutes les paires de prépositions verbales dans le corpus Brown, puis rechercher celles du verbe «go». D'abord les comptes:
import nltk
from nltk.corpus import brown
prepchoices = nltk.ConditionalFreqDist((v[0], p[0])
for (v, p) in nltk.bigrams(brown.tagged_words(tagset="universal"))
if v[1] == "VERB" and p[1] == "ADP")
"ADP" signifie "adposition", c'est-à-dire préposition ou post-position. Maintenant, regardons ce que nous avons:
>>> prepchoices["go"]
FreqDist({'to': 96, 'with': 20, 'into': 18, 'through': 8, 'on': 8, 'for': 7,
'in': 5, 'out': 4, 'around': 4, 'from': 4, ...})
Vous pouvez obtenir les meilleurs choix, par ordre décroissant de fréquence, avec most_common()
:
>>> print(prepchoices["go"].most_common(5))
[('to', 96), ('with', 20), ('into', 18), ('through', 8), ('on', 8)]
Je n'ai pas fait découlant des verbes ("va" et "allé" ont été comptés comme des mots séparés), ou même le cas-pliage. Vous pouvez les ajouter, mais ce qui précède devrait déjà vous donner une image décente de la distribution.
Il s'agit du texte anglais, non? Les prépositions sont une classe fermée, ce qui signifie que vous pouvez créer une liste complète de toutes les prépositions (ce que vous ne pouvez pas faire pour les noms ou les verbes). Si vous savez où est la fente ouverte, vous pouvez simplement remplir chacun d'eux et utiliser un modèle de langue pour comparer la perplexité de la phrase entière pour chaque candidat. C'est, bien sûr, une méthode de force brute, je suis sûr qu'il existe de meilleurs moyens de le faire. – lenz