2 回答

TA貢獻1869條經驗 獲得超4個贊
我有一個解決方案給你,所以讓我們來看看你的代碼中存在的一些錯誤:
寫作list(wn.all_synsets('a')將返回所有形容詞的列表作為 Synset 對象,但你真正想要的是形容詞名稱的字符串。調用synset.name()以這種格式返回數據:acroscopic.a.01. 因為我們只想要它的第一部分(并且作為一個字符串),我們將改變
for synset in list(wn.all_synsets('a')):
my_list.append(synset)
到
for synset in list(wn.all_synsets('a')):
my_list.append(str(synset.name()).split(".")[0])
所以現在我們有了所有形容詞的所需列表。現在,請注意該行
for word in sentence:
是解析句子中的單個字符而不是單詞。我們想要的是
for word in sentence.split(" "):
綜上所述,這就是我將如何解決這個問題:
truth_values = []
for sentence in text:
adjectives = []
for word in sentence.split(" "):
if word in my_list:
adjectives.append(word)
truth_values.append(1 if any(adjectives.count(adj) > 1 for adj in adjectives) else 0)

TA貢獻1936條經驗 獲得超7個贊
如果你想得到所有的形容詞,這可能會很棘手。最好的方法是使用語言解析器,例如 stanford 統計解析器。它將導致句子中每個單詞的語法功能。你也可以使用 spacy。
import spacy
# Load English tokenizer, tagger, parser, NER and word vectors
nlp = spacy.load("en_core_web_sm")
# Process whole documents
text = ("When someone who is extremely selfish dramatically"
"wonders why people are so selfish !")
doc = nlp(text)
# Analyze syntax
adj = [token.lemma_ for token in doc if token.pos_ == "ADJ"]
repeat = len(adj) != len(set(adj))
print("Adjectives:", adj)
print("Repeats?", repeat)
嘗試使用以下句子來運行您的方法:“當您這么說時,我的意思不是您的意思”。它失敗了,但是用這種其他方法它不會。原因是“平均”可以是形容詞,但并非總是如此。
添加回答
舉報