我使用textacy
的pos_regex_matches
方法來查找句子中的某些文本塊。用`testacy.extract.pos_regex_matches(...)與特定文本匹配PoS標記'
例如,假設我有文本:Huey, Dewey, and Louie are triplet cartoon characters.
,我想檢測Huey, Dewey, and Louie
是枚舉。
要做到這一點,我用下面的代碼(在testacy 0.3.4
,可用的版本在寫作的時間):它打印
import textacy
sentence = 'Huey, Dewey, and Louie are triplet cartoon characters.'
pattern = r'<PROPN>+ (<PUNCT|CCONJ> <PUNCT|CCONJ>? <PROPN>+)*'
doc = textacy.Doc(sentence, lang='en')
lists = textacy.extract.pos_regex_matches(doc, pattern)
for list in lists:
print(list.text)
:
Huey, Dewey, and Louie
但是,如果我有什麼如下所示:
sentence = 'Donald Duck - Disney'
那麼-
(破折號)是確認爲<PUNCT>
,整個句子被識別爲一個列表 - 事實並非如此。
有沒有辦法指定只有,
和;
對列表有效<PUNCT>
?
我已經找了一些關於這個正則表達式語言匹配PoS標籤沒有運氣的參考,任何人都可以幫忙嗎?提前致謝!
PS:我想,以取代<PUNCT|CCONJ>
<[;,]|CCONJ>
,<;,|CCONJ>
,<[;,]|CCONJ>
,<PUNCT[;,]|CCONJ>
,<;|,|CCONJ>
和<';'|','|CCONJ>
所建議的意見,但沒有奏效...
嘗試用[,;]代替punct –