NLTK CFG Grammar Распознавать все строки - PullRequest
0 голосов
/ 22 мая 2019

Мне нужно преобразовать это регулярное выражение: [A-Za-z _] + в контекстно-бесплатную грамматику

Мне нужен лучший способ распознавать строки, которые просто добавляют все буквы алфавита в грамматике.

import nltk
grammar = """
S -> '"' A '"'
A -> B A | B
B -> '_' | 'a' | 'b' | 'c' | ... | 'z' | 'A' | 'B' | 'C' | ... | 'Z'
"""
grammar = nltk.CFG.fromstring(grammar)

Строки представляют собой последовательности символов от "a" до "z" (прописные и строчные) и подчеркивания: '_'.

Я нашел решение:

strings = list(set(regexp_tokenize(s, pattern='"[A-Za-z_]+"')))
for st in strings:
    grammar += "S -> \'" + st + "\'\n    "
...