2017-08-04 2 views
0

Je suis actuellement nouveau avec PNL et j'ai besoin de conseils quant à la façon dont je peux résoudre ce problème.Comment extraire les relations d'un texte

Je suis actuellement en train de faire une technique de filtrage où j'ai besoin de marquer les données dans une base de données comme étant correctes ou incorrectes. On me donne un ensemble de données structuré, avec des colonnes et des lignes. Cependant, les conditions de filtrage me sont données dans un fichier texte. Un fichier texte par exemple le filtrage pourrait être la suivante:

Values in the column ID which are bigger than 99 
Values in the column Cash which are smaller than 10000 
Values in the column EndDate that are smaller than values in StartDate 
Values in the column Name that contain numeric characters 

Toute valeur qui suit ces conditions devrait être de marque aussi mauvais. Cependant, je veux extraire ces conditions et les ajouter au programme que j'ai fait jusqu'à maintenant.

Par exemple, pour les conditions ci-dessus, je voudrais produire

`if ID>99` 
`if Cash<10000` 
`if EndDate < StartDate` 
`if Name LIKE %[1-9]%` 

Comment puis-je obtenir le résultat ci-dessus à l'aide du Stanford PNL? (ou toute autre bibliothèque NLP).

Répondre

3

Cela ne ressemble pas à un problème d'apprentissage automatique; c'est un simple analyseur. Vous avez une syntaxe simple, à partir de laquelle vous pouvez facilement extraire les principales caractéristiques:

  • nom de la colonne
  • relation
  • valeur cible ou colonne cible

Le résultat « règle d'action » consiste simplement à supprimer les mots "sucre syntaxique" et à convertir la relation - et éventuellement la valeur cible - en sa forme symbolique.

Énumérer tous vos mots critiques pour chaque position dans un lexique. Utilisez ensuite les opérateurs de base de manipulation de chaînes dans le langage d'implémentation choisi pour trouver les trois champs nécessaires.

EXEMPLE

Compte tenu des données ci-dessus, vos lexiques pourraient ressembler à ceci:

column_trigger = "Values in the column" 
relation_dict = { 
    "are bigger than" : ">", 
    "are smaller than" : "<", 
    "contain"   : "LIKE", 
    ... 
} 
value_desc = { 
    "numeric characters" : "%[1-9]%", 
    ... 
} 

A partir de là, utilisez ces éléments dans l'analyse syntaxique standard. Si vous n'êtes pas familier avec cela, s'il vous plaît consulter les bases d'une grammaire simple phrase dans votre langage de programmation favori, avec des règles telles que telles que

SENTENCE => SUBJ VERB OBJ 

Est-ce que vous y aller?

+0

J'ai l'idée de ce que vous dites, mais j'ai du mal à voir comment je peux implémenter votre solution. Pourriez-vous prolonger votre réponse un peu plus? Je suis un noob à ce sujet. En outre, je vais supprimer la balise d'apprentissage de la machine. Merci d'avoir fait remarquer cela – SVCS1994