web-dev-qa-db-fra.com

Qu'est-ce qu'un n gramme exactement?

J'ai trouvé cette question précédente sur SO: N-grammes: Explication + 2 applications . Le PO a donné cet exemple et a demandé s'il était correct:

Sentence: "I live in NY."

Word level bigrams (2 for n): "# I', "I live", "live in", "in NY", 'NY #'
character level bigrams (2 for n): "#I", "I#", "#l", "li", "iv", "ve", "e#", "#i", "in", "n#", "#N", "NY", "Y#"

When you have this array of n-gram-parts, you drop the duplicate ones and add a counter for each part giving the frequency:

Word level bigrams: [1, 1, 1, 1, 1]
character level bigrams: [2, 1, 1, ...]

Quelqu'un dans la section des réponses a confirmé que c'était correct, mais malheureusement je suis un peu perdu au-delà car je n'ai pas bien compris tout ce qui a été dit! J'utilise LingPipe et je suis en train de suivre un tutoriel qui a déclaré que je devrais choisir une valeur entre 7 et 12 - mais sans préciser pourquoi.

Qu'est-ce qu'une bonne valeur nGram et comment dois-je en tenir compte lors de l'utilisation d'un outil comme LingPipe?

Edit: C'était le tutoriel: http://cavajohn.blogspot.co.uk/2013/05/how-to-sentiment-analysis-of-tweets.html

23
user2649614

Les N-grammes sont simplement toutes les combinaisons de mots ou de lettres adjacentes n que vous pouvez trouver dans votre texte source. Par exemple, étant donné le mot fox, tous les 2 grammes (ou "bigrammes") sont fo et ox. Vous pouvez également compter la limite de Word - qui étendrait la liste des 2 grammes à #f, fo, ox et x#, où # désigne une limite de Word.

Vous pouvez faire de même au niveau Word. Par exemple, le hello, world! le texte contient les bigrammes de niveau Word suivants: # hello, hello world, world #.

Le point de base des n-grammes est qu'ils capturent la structure du langage d'un point de vue statistique, comme quelle lettre ou mot est susceptible de suivre celui donné. Plus le n-gramme est long (plus le n est élevé), plus vous devez travailler avec le contexte. La longueur optimale dépend vraiment de l'application - si vos n-grammes sont trop courts, vous risquez de ne pas saisir les différences importantes. D'un autre côté, si elles sont trop longues, vous risquez de ne pas saisir les "connaissances générales" et de ne vous en tenir qu'à des cas particuliers.

40
zoul

Habituellement, une image vaut mille mots. enter image description here

Source: http://recognize-speech.com/language-model/n-gram-model/comparison

37
Kamran

Un n-gramme est un n-Tuple ou groupe de n mots ou caractères (grammes, pour les morceaux de grammaire) qui se succèdent. Donc, un n de 3 pour les mots de votre phrase serait comme "# je vis", "j'habite", "vis à NY", "à NY #". Ceci est utilisé pour créer un index de la fréquence à laquelle les mots se succèdent. Vous pouvez l'utiliser dans un Markov Chain pour créer quelque chose qui sera similaire à la langue. Lorsque vous remplissez un mappage des distributions des groupes Word ou des groupes de caractères, vous pouvez les recombiner avec la probabilité que la sortie soit proche de la nature, plus le n-gram est long.

Trop élevé d'un nombre, et votre sortie sera une copie Word pour Word de l'original, trop basse d'un nombre, et la sortie sera trop salissante.

3
codethulhu