2017-08-07 3 views
1

私は文章を含むリストを持っています。Spacyを使ってLemmatizing

list = ["I'm hoping to go jogging", "I haven't eaten in a while","where is everybody going"]

私は、上記のリストをlemmatizeと補題の持つ本来の言葉を交換したいです。

spacyを使用してどうすればよいですか?

私は補題をループで印刷することができますが、私が望むのは原語をlemmatizedに置き換えることです。

答えて

1

これは、あなたが探しているもののように聞こえる:「?。こんにちは、あなたをどのように私は良いやっている」

import spacy 
from spacy.en import English 
parser = English() 

list = ["I'm hoping to go jogging", "I haven't eaten in a while","where is everybody going", 
    "Hello, how are you? I'm doing good."] 
lemmatized_list = [] 

for sentence in list: 
    tokens = parser(sentence) 
    lemmas = [] 
    for tok in tokens: 
     if not tok.is_punct: 
      lemmas.append(tok.lemma_.lower().strip() if tok.lemma_ != "-PRON-" else tok.lower_) 
    lemmatized_phrase = "" 
    for l in lemmas: 
     lemmatized_phrase += l + " " 
    lemmatized_phrase = lemmatized_phrase[:-1] 
    lemmatized_list.append(lemmatized_phrase) 
print (lemmatized_list) 

>>> ['i be hop to go jogging', "i haven't eat in a while", 'where be everybody go', 'hello how be you i be do good'] 
+0

のような文章がある場合、これは、除いて大丈夫に見えます。カンマとフルストップは別の言葉になります。私はどうやってそれを得るのですか?私はそれを見せたいと思っています - 「こんにちは、どうやっていますか?いいですか?」 – Nimphadora

+0

@AshanWijenayake最初にトークン化し、次にlemmatizeし、lemmatizedトークンに参加しますか?上記のコードから 'tok.is_punct'を根本的に削除してください。 – erip

+0

私は 'tok.is_punct'を入れました。なぜなら、結果に疑問符やその他の句読点が必要ないからです – cardamom

関連する問題