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条经验 获得超6个赞
如果你想得到所有的形容词,这可能会很棘手。最好的方法是使用语言解析器,例如 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)
尝试使用以下句子来运行您的方法:“当您这么说时,我的意思不是您的意思”。它失败了,但是用这种其他方法它不会。原因是“平均”可以是形容词,但并非总是如此。
添加回答
举报