テキストの大規模なコーパスで、文のどこかに (動詞-名詞) または (形容詞-名詞) の特定のリストがあるすべての文を抽出することに興味があります。長いリストがありますが、ここにサンプルがあります。私の MWE では、「write/wrote/writing/writes」と「book/s」で文を抽出しようとしています。私は約30のそのような単語のペアを持っています.
これが私が試したものですが、ほとんどの文をキャッチしていません:
import spacy
nlp = spacy.load('en_core_web_sm')
from spacy.matcher import Matcher
matcher = Matcher(nlp.vocab)
doc = nlp(u'Graham Greene is his favorite author. He wrote his first book when he was a hundred and fifty years old.\
While writing this book, he had to fend off aliens and dinosaurs. Greene\'s second book might not have been written by him. \
Greene\'s cat in its deathbed testimony alleged that it was the original writer of the book. The fact that plot of the book revolves around \
rats conquering the world, lends credence to the idea that only a cat could have been the true writer of such an inane book.')
matcher = Matcher(nlp.vocab)
pattern1 = [{"LEMMA": "write"},{"TEXT": {"REGEX": ".+"}},{"LEMMA": "book"}]
matcher.add("testy", None, pattern)
for sent in doc.sents:
if matcher(nlp(sent.lemma_)):
print(sent.text)
残念ながら、一致するのは 1 つだけです。
「この本を書いている間、彼はエイリアンと恐竜をかわさなければなりませんでした。」
一方、「彼は最初の本を書いた」という文も得られると思います。他の write-books には、一致しないということで、good の名詞として writer があります。