我正在面對Python正則表達式中的一些問題。
我已經Pos的文本標籤字的格式如下正則表達式在文本中提取名詞
('play', 'NN')|('2', 'CD')|('dvd', 'NN')|('2', 'CD')|('for', 'IN')|('instance', 'NN')|('i', 'PRP')|('made', 'VBD')|('several', 'JJ')|('back', 'NN')|('ups', 'NNS')|('of', 'IN')|('my', 'PRP$')|('dvd', 'NN')|('movies', 'NNS')|('using', 'VBG')|('dvd', 'NN')|('r', 'NN')|('w', 'NN')|('and', 'CC')|('r', 'NN')|('w', 'NN')|('and', 'CC')|('it', 'PRP')|('plays', 'VBZ')|('the', 'DT')|('dvds', 'NNS')
我希望做的是提取這段文字一起出現的所有的名詞和所有的名詞(沒有它們之間存在的話)應該是在同一個字符串中。所有以NN開頭的標籤都是名詞。這裏是正則表達式我寫了這一點:
re.compile(r"(\|?\([\'|\"][\w]+[\'|\"]\, \'NN\w?\'\)\|?)+")
我是新來書寫正則表達式的凌亂的表達式很抱歉,但這裏是它的產生ouptput:
["('play', 'NN')|", "|('dvd', 'NN')|", "|('instance', 'NN')|", "('ups', 'NNS')|", "('movies', 'NNS')|", "('w', 'NN')|", "('w', 'NN')|"]
我要的是對於語料庫中的「備份」和「DVD電影」這樣的詞,即出現在一起的名詞應該一起出現在輸出中。
我做錯了什麼,誰能請sujjest!
請不要使用正則表達式解析名詞。正則表達式不適合於這項任務,因爲他們無法理解給定語言的語義或語法。請考慮使用類似nltk的東西。 –
@JamesMills - 我相信OP已經在標記語法語法中標記爲名詞......例如,僞元素中的第二個元素是'NN' – mgilson
即使識別哪個位置標記的標記實際上是名詞,我仍然會在這裏使用nltk。 –