2017-07-04 5 views
0

J'utilise stanford pos tagger pour marquer le contenu du tweet. j'ai besoin d'extraire des endroits comme « le pont de porte d'or » ou « Tiburon blvd », etc. J'ai quelques règles pour détecter l'emplacement, qui sont:regex pour le texte tag tag pour l'emplacement de l'extrait

1.<NN>+ 
2.<DT>?<JJ>?<1> ----> <1>:it means the rule number 1 
3.<CD>?<2> 
4.<2> <CD>? 
5.(3|4) <CC | PE> (3|4) 

Le signe « + » indique la présence d'une étiquette à au moins un ou plusieurs fois, le signe "?" indique la présence d'une étiquette zéro ou une fois, et le signe "|" indique la présence de l'une des deux étiquettes . et nous avons des noms (NN), des déterminants (DT), des adjectifs (JJ), des nombres cardinaux (CD), des conjonctions (CC), et des fins possessives (PE) de pos tagger.

Un exemple de phrase étiquetée pos: «this/DT renversé/VBN tanker/NN dans/IN marin/NN a/VBZ créé/VBN a/DT énorme/JJ confiture/NN sur/IN wb/NN 580/CD clear/JJ à travers/dans le/DT Richmond/JJ san/NN rafael/NN pont/NN &/CC Four/CD "

peut-on m'aider à créer regex pour chaque règle en java?

Répondre

0

Bien qu'il existe probablement mieux/solutions plus efficaces, cela devrait fonctionner:

1. (\w+/NN)(\s(\w+/NN))* 
2. (\w+/DT\s)?(\w+/JJ\s)?(\w+/NN)(\s(\w+/NN))* 
3. (\w+/CD\s)?(\w+/DT\s)?(\w+/JJ\s)?(\w+/NN)(\s(\w+/NN))* 
4. (\w+/DT\s)?(\w+/JJ\s)?(\w+/NN)(\s(\w+/NN))*(\s\w+/CD)? 
5. ((<3>)|(<4>))\s((\w+/CC)|(\w+/PE))\s((<3>)|(<4>)) 

Une petite explication: (\w+/NN) extraits toute combinaison de caractères (au moins un) suivi d'une barre oblique et « NN » (par exemple citerne/NN). Si nous combinons cela avec un espace (\ s), nous pouvons extraire n'importe quel nombre arbitraire de noms consécutifs. Pour la deuxième règle, nous ajoutons deux parties optionnelles qui extraient ".../DT" et ".../JJ" et les combinent avec la première règle. La règle trois ajoute simplement une autre partie optionnelle qui extrait ".../CD" et la combine avec la règle deux. Pour la règle quatre, nous ajoutons un ".../CD" optionnel à la règle deux.

Pour la cinquième règle, vous devez remplacer <3> et <4> par la règle correspondante. Sinon, cela semblerait un peu complexe. La partie centrale extrait ".../CC" ou ".../PE" et nous ajoutons et ajoutons un préfixe à un motif pour correspondre à la règle trois ou à la règle quatre.