2013-05-29 4 views
5

J'ai donc travaillé sur un projet de traitement du langage naturel dans lequel j'ai besoin de classer différents styles d'écriture. En supposant que les caractéristiques sémantiques des textes ont déjà été extraites pour moi, je prévois d'utiliser Weka en Java pour former les classificateurs SVM en utilisant ces fonctionnalités qui peuvent être utilisées pour classer d'autres textes différents.Traitement du langage naturel - Conversion des caractéristiques textuelles en vecteurs de caractéristiques

La partie sur laquelle j'ai des problèmes est que pour former un SVM, les fonctionnalités doivent être converties en un vecteur de caractéristiques. Je ne suis pas sûr de savoir comment vous seriez capable de représenter des caractéristiques telles que la richesse du vocabulaire, les n-grammes, la ponctuation, le nombre de paragraphes et la longueur du paragraphe en tant que nombres dans un vecteur. Si quelqu'un pouvait pointer dans la bonne direction, ce serait grandement apprécié.

+0

Vous ne savez pas exactement ce que vous cherchez, mais j'espère que mon petit exemple vous aidera. Bonne chance. –

Répondre

5

Je ne suis pas sûr de ce que les valeurs de vos attributs peuvent prendre, mais peut-être cet exemple vous aidera:

Supposons que nous menons une expérience d'apprentissage supervisé pour tenter de déterminer si une période marque la fin d'une phrase ou pas, EOS et NEOS respectivement. Les données de formation est venue de phrases normales dans un format de style de paragraphe, mais ont été transformées au modèle vectoriel suivant:

  • Colonne 1: Classe: fin de la peine ou non-fin de phrase
  • Colonnes 2-8: Les +/- 3 mots entourant la période en question
  • Colonnes 9,10: Le nombre de mots à gauche/droite, respectivement, de la période avant le prochain délimiteur de phrase fiable (par exemple?,! Ou un marqueur de paragraphe).
  • Colonne 11: Le nombre d'espaces suivant la période.

Bien sûr, ce n'est pas un problème très compliqué à résoudre, mais c'est une bonne petite introduction à Weka. Nous ne pouvons pas simplement utiliser les mots comme des caractéristiques (très grand espace dimensionnel), mais nous pouvons prendre leurs étiquettes POS (partie du discours). Nous pouvons donc extraire la longueur des mots, que le mot soit ou non en majuscule, etc.

Ainsi, vous pouvez nourrir n'importe quoi comme données de test, tant que vous êtes capable de le transformer en modèle vectoriel ci-dessus et d'extraire les fonctionnalités utilisées dans le .arff.

qui suit (très petite partie) fichier .arff a été utilisé pour déterminer si une période d'une phrase a marqué la fin ou non:

@relation period 

@attribute minus_three {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'} 
@attribute minus_three_length real 
@attribute minus_three_case {'UC','LC','NA'} 
@attribute minus_two {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'} 
@attribute minus_two_length real 
@attribute minus_two_case {'UC','LC','NA'} 
@attribute minus_one {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'} 
@attribute minus_one_length real 
@attribute minus_one_case {'UC','LC','NA'} 
@attribute plus_one {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'} 
@attribute plus_one_length real 
@attribute plus_one_case {'UC','LC','NA'} 
@attribute plus_two {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'} 
@attribute plus_two_length real 
@attribute plus_two_case {'UC','LC','NA'} 
@attribute plus_three {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'} 
@attribute plus_three_length real 
@attribute plus_three_case {'UC','LC','NA'} 
@attribute left_before_reliable real 
@attribute right_before_reliable real 
@attribute spaces_follow_period real 
@attribute class {'EOS','NEOS'} 

@data 

VBP, 2, LC,NP, 4, UC,NN, 1, UC,NP, 6, UC,NEND, 1, NA,NN, 7, LC,31,47,1,NEOS 
NNS, 10, LC,RBR, 4, LC,VBN, 5, LC,?, 3, NA,NP, 6, UC,NP, 6, UC,93,0,0,EOS 
VBD, 4, LC,RB, 2, LC,RP, 4, LC,CC, 3, UC,UH, 5, LC,VBP, 2, LC,19,17,2,EOS 

Comme vous pouvez le voir, chaque attribut peut prendre tout vous voulez qu'il:

  • real désigne un nombre réel
  • je compose LC et UC pour désigner les majuscules et les minuscules, respectivement
  • La plupart des autres valeurs sont POS balises

Vous devez savoir exactement ce que vos caractéristiques, et ce que les valeurs que vous allez utiliser pour représenter/les classer. Ensuite, vous devez transformer vos données dans le format défini par votre fichier .arff.

Pour aborder votre question de ponctuation, supposons que toutes les phrases se terminent par . ou ?.Vous pouvez avoir un attribut appelé punc, qui prend deux valeurs:

@attribute punc {'p','q'} 

Je ne suis pas allé parce que ce ? est ce qui est (classique) attribué lorsqu'un point de données sont manquantes. Notre vous pourriez avoir des attributs booléens qui indiquent si un caractère ou ce que vous avez été présent (avec 0, 1 ou faux, vrai). Un autre exemple, mais pour la qualité:

@attribute quality {'great','good', 'poor'} 

La façon dont vous déterminez cette classification dépend de vous, mais ce qui précède devrait vous aider à démarrer. Bonne chance.

+0

J'ai essayé d'être aussi détaillé que possible, mais je suis sur une tablette - c'est dur. –

Questions connexes