亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從重復的形容詞中獲取真值

從重復的形容詞中獲取真值

HUH函數 2022-04-27 13:29:18
我有一個包含不同文本的數組。其中一些有重復的形容詞?,F在我想從中創建一個數組,它包含真值,1 = 文本包含重復的形容詞,0 = 文本不包含重復的形容詞。這是我的文本示例:text = (['When someone who is extremely selfish dramatically wonders why people are so selfish !', 'I asked God to protect me from my enemies .. shortly after I started losing friends'])到目前為止,我嘗試使用 wordnet 獲取單詞的類型from nltk.corpus import wordnet as wnmy_list = []for synset in list(wn.all_synsets('a')):    my_list.append(synset)my_listtruth_values = []for sentence in text:    for word in sentence:        if word in my_list:            truth_values.append(1)from nltk.corpus import wordnet as wn這段代碼給了我以下錯誤:'str' object has no attribute '_name'對于重復的條件,我想像這樣的計數器if counter >=1:    truth_value.append(1)
查看完整描述

2 回答

?
MMTTMM

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)


查看完整回答
反對 回復 2022-04-27
?
LEATH

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)

嘗試使用以下句子來運行您的方法:“當您這么說時,我的意思不是您的意思”。它失敗了,但是用這種其他方法它不會。原因是“平均”可以是形容詞,但并非總是如此。


查看完整回答
反對 回復 2022-04-27
  • 2 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號