入力:「私の好きなゲームは義務です」NLTKのキーワードをどのようにトークン化するのですか?
私はキーワードとして "コールオブデューティ"を設定します。このフレーズはトークン化プロセスでは1つの単語になります。
は、最後に結果を取得したい:[「私」、「好きな」、「ゲーム」、「で」、「義務の呼び出しを」]
ので、pythonのNLPにおけるキーワードを設定する方法?
入力:「私の好きなゲームは義務です」NLTKのキーワードをどのようにトークン化するのですか?
私はキーワードとして "コールオブデューティ"を設定します。このフレーズはトークン化プロセスでは1つの単語になります。
は、最後に結果を取得したい:[「私」、「好きな」、「ゲーム」、「で」、「義務の呼び出しを」]
ので、pythonのNLPにおけるキーワードを設定する方法?
私はあなたが望むのは、キーフレーズの抽出です。たとえば、最初に各単語にPoSタグをタグ付けしてから、PoSタグに何らかの正規表現を適用して興味のある単語をキーフレーズに結合します。
import nltk
from nltk import pos_tag
from nltk import tokenize
def extract_phrases(my_tree, phrase):
my_phrases = []
if my_tree.label() == phrase:
my_phrases.append(my_tree.copy(True))
for child in my_tree:
if type(child) is nltk.Tree:
list_of_phrases = extract_phrases(child, phrase)
if len(list_of_phrases) > 0:
my_phrases.extend(list_of_phrases)
return my_phrases
def main():
sentences = ["My favorite game is call of duty"]
grammar = "NP: {<DT>?<JJ>*<NN>|<NNP>*}"
cp = nltk.RegexpParser(grammar)
for x in sentences:
sentence = pos_tag(tokenize.word_tokenize(x))
tree = cp.parse(sentence)
print "\nNoun phrases:"
list_of_noun_phrases = extract_phrases(tree, 'NP')
for phrase in list_of_noun_phrases:
print phrase, "_".join([x[0] for x in phrase.leaves()])
if __name__ == "__main__":
main()
この意志の出力以下:
Noun phrases:
(NP favorite/JJ game/NN) favorite_game
(NP call/NN) call
(NP duty/NN) duty
しかし、あなたは正確に何をしたい得ることができるようにあなたは、
式の他のタイプをしようとgrammar = "NP: {<DT>?<JJ>*<NN>|<NNP>*}"
で遊んことができ、あなたが一緒に参加したい単語/タグに依存します。興味のある方は
はまた、/単語抽出をキーフレーズには、この非常に良い導入を確認してください。
https://bdewilde.github.io/blog/2014/09/23/intro-to-automatic-keyphrase-extraction/
をこれは、もちろん、OPするのに有用であることがあまりにも遅れているが、私は私と思いました
本当に聞いているように聞こえます:「義務の呼び出し」のような複合語が1つのトークンとしてまとめられていることを確認するにはどうすればよいですか?
あなたはそうのように、NLTKのマルチワード表現トークナイザを使用することができます:mwe
はマルチワード表現の略
string = 'My favorite game is call of duty'
tokenized_string = nltk.word_tokenize(string)
mwe = [('call', 'of', 'duty')]
mwe_tokenizer = nltk.tokenize.MWETokenizer(mwe)
tokenized_string = mwe_tokenizer.tokenize(tokenized_string)
。 tokenized_string
の値は['My', 'favorite', 'game', 'is', 'call of duty']
なぜトークンになりますか?トークンではなくエンティティとして認識されるようにします。 – erip