Bienvenue dans le monde de la PNL ^_^
Tout ce dont vous avez besoin, c'est d'un peu de connaissances de base et de quelques outils.
Il existe déjà des outils qui vous permettent de savoir si un mot dans une phrase est un nom, un adjectif ou un verbe. Ils s'appellent tagueurs de parties du langage . En général, ils prennent de l'anglais en clair en entrée, et produisent le mot, sa forme de base et la partie de la parole. Voici le résultat d'un marqueur de parties du langage UNIX populaire sur la première phrase de votre message :
$ echo "Without getting a degree in information retrieval, I'd like to know if there exists any algorithms for counting the frequency that words occur in a given body of text." | tree-tagger-english
# Word POS surface form
Without IN without
getting VVG get
a DT a
degree NN degree
in IN in
information NN information
retrieval NN retrieval
, , ,
I PP I
'd MD will
like VV like
to TO to
know VV know
if IN if
there EX there
exists VVZ exist
any DT any
algorithms NNS algorithm
for IN for
counting VVG count
the DT the
frequency NN frequency
that IN/that that
words NNS word
occur VVP occur
in IN in
a DT a
given VVN give
body NN body
of IN of
text NN text
. SENT .
Comme vous pouvez le voir, il a identifié "algorithmes" comme étant la forme plurielle (NNS) de "algorithme" et "existe" comme étant une conjugaison (VBZ) de "exister". Il a également identifié "a" et "the" comme étant des "déterminants (DT)" - un autre mot pour article. Comme vous pouvez le voir, l'identificateur POS a également identifié la ponctuation.
Pour tout faire, sauf le dernier point de votre liste, il suffit de passer le texte dans un trieur POS, de filtrer les catégories qui ne vous intéressent pas (déterminants, pronoms, etc.) et de compter les fréquences des formes de base des mots.
Voici quelques étiqueteurs POS populaires :
TreeTagger (binaire uniquement : Linux, Solaris, OS-X)
Tagger GENIA (C++ : compilez vous-même)
Tagger POS de Stanford (Java)
Pour faire la dernière chose sur votre liste, vous avez besoin de plus que de simples informations sur les mots. Un moyen facile de commencer est de compter séquences de mots plutôt que les mots eux-mêmes. Ils sont appelés n-grams . Un bon point de départ est UNIX pour les poètes . Si vous êtes prêt à investir dans un livre sur la PNL, je vous recommande Fondements du traitement statistique du langage naturel .
0 votes
Je me demande si cela peut vous être utile : ibm.com/developerworks/linux/library/l-cpnltk.html
0 votes
Je l'ai fait en .NET : blog.wekeroad.com/2007/09/12/ blog.wekeroad.com/2007/09/20/ J'espère que cela vous aidera