3
Spacy有兩個特點,我想結合 - part-of-speech(POS)和rule-based matching。怎麼寫POS正則表達式匹配spacy
我該如何將它們以一種整潔的方式結合起來?
例如 - 假設輸入是一個簡單的句子,我想,以驗證它滿足一些POS排序條件 - 比如動詞是名詞之後(類似名詞動詞**正則表達式)。結果應該是真或假。這是可行的嗎?或匹配器具體如在示例中
基於規則的匹配可以有POS規則嗎?
如果沒有 - 這是我目前的計劃 - 聚集在一個字符串的一切,並應用正則表達式
import spacy
nlp = spacy.load('en')
#doc = nlp(u'is there any way you can do it')
text=u'what are the main issues'
doc = nlp(text)
concatPos = ''
print(text)
for word in doc:
print(word.text, word.lemma, word.lemma_, word.tag, word.tag_, word.pos, word.pos_)
concatPos += word.text +"_" + word.tag_ + "_" + word.pos_ + "-"
print('-----------')
print(concatPos)
print('-----------')
# output of string- what_WP_NOUN-are_VBP_VERB-the_DT_DET-main_JJ_ADJ-issues_NNS_NOUN-
看起來很有趣。兩個問題 - 這個匹配數組是什麼?我只用數字打印它。第二 - 我能以某種方式集成硬編碼的單詞(例如「什麼」等) - 就像正則表達式可以同時在POS和文本上工作? – user1025852
1.看到spacy包目錄matcher.py文件,這裏就是寫關於Matcher對象的__call__方法 - 列表 的列表(entity_key,label_id,開始,結束)的元組, 描述匹配。匹配元組描述跨度文檔[開始:結束]。 label_id和entity_key都是整數。 2.是的,試試這個matcher.add_pattern(「形容詞和名詞」,[{POS:'ADJ',LOWER:'main'},{POS:'NOUN'}]]) –