-4

J'essaie de clarifier ma question et je m'excuse si j'utilise des termes incorrects.Comment extraire des informations d'un texte avec une classification supervisée?

Je N documents texte de la forme suivante

"Le meilleur nombre est 200 parce que [...]"

"J'aime 250 plus de 120 [...]"

"[...] 300 est mon numéro préféré"

"Rien ne vaut mieux que 450 [...]" etc.

Donné ce nouveau document:

"Le sommet des sommets est de 125 [...]"

Comment puis-je extraire l'information "125"?

Je pré-traite le texte afin de réduire la dimension des documents de 50 pages à 2-5 phrases en utilisant regexp. Je ne fais pas d'autres opérations sur le texte

Veuillez noter que Regexp ne devrait pas être très utile, car il est assez difficile de trouver un motif régulier et je devrai traiter beaucoup d'informations différentes (pas seulement J'ai pensé qu'une approche d'apprentissage automatique aurait été utile, alors j'ai assigné une valeur à mes N documents (par exemple "200", "250", "300", "450") et j'ai essayé de prédire la valeur de "125" avec SVM, Algorithme MAXENT des paquets RTextTools, mais avec un résultat médiocre.

Mon approche d'apprentissage automatique est-elle correcte et comment pourrais-je améliorer ma méthodologie d'extraction de l'information?

Merci

+1

Salut! Quel type de pré-traitement exécutez-vous sur votre texte? Est-ce que vous le divisez en caractères ou en mots? Est-ce que vous marquez des chaînes de texte source de toute façon? En général, ce que vous utilisez comme entrée dans les algorithmes ML - car les textes bruts comme des chaînes uniques ne fonctionneront pas du tout. Veuillez l'inclure dans la question ainsi que quelques exemples spécifiques. –

+0

S'il vous plaît lire [aide/sur-sujet] –

+0

J'ai modifié spécifié l'exemple et ajouté des informations sur le pré-traitement du texte – pinopino

Répondre

0

En supposant que vous avez un vecteur vec défini comme suit:

vec <- c("The best number is 200 because [...]", 
      "I like 250 more than 120 [...]", 
      "[...]300 is my favourite number", 
      "Nothing is better than 450[...]", 
      "The top of the tops is 125[...]") 

Vous pouvez extraire tous les entiers en utilisant str_extract_all du package stringr et construire regex de rebus package:

library(rebus) 
library(stringr) 
str_extract_all(vec, pattern = one_or_more(DGT), simplify = TRUE) 
#  [,1] [,2] 
# [1,] "200" "" 
# [2,] "250" "120" 
# [3,] "300" "" 
# [4,] "450" "" 
# [5,] "125" ""