2017-12-10 6 views
0

Ich benutze Gensim Phrasen, um wichtige N-Gramm in meinem Text wie folgt zu identifizieren.Gensim Phrases Verwendung zu Filtern N-Gramm

bigram = Phrases(documents, min_count=5) 
trigram = Phrases(bigram[documents], min_count=5) 

for sent in documents: 
    bigrams_ = bigram[sent] 
    trigrams_ = trigram[bigram[sent]] 

jedoch erkennt dies uninteressant n-Gramm wie special issue, important matter, high risk etc. Ich bin besonders interessiert Konzepte im Text wie machine learning, bei der Aufdeckung von human computer interaction usw.

Gibt es eine Möglichkeit um Sätze zu stoppen, die uninteressante N-Gramme entdecken, wie ich oben in meinem Beispiel erwähnt habe?

+0

Definieren Sie "uninteressant" oder "interessant". –

+1

@CharlesPehlivanian Ich habe Beispiele gegeben –

Antwort

0

Wenn ich verstehe, was Sie zu tun versuchen, können Sie tf_idf auf Ihrem Korpus im Vergleich zu der tf_idf eines größeren, sagen, Standardkorpus (Wikipedia oder etwas) versuchen.

from sklearn.feature_extraction.text import 

TfidfVectorizertfidf_vectorizer = 
    TfidfVectorizer(max_df=0.8, max_features=500,min_df=0.2, 
        stop_words='english', use_idf=True, ngram_range=(1,2)) 
X = tfidf_vectorizer.transform(docs) # transform the documents to their tf_idf vectors 

Schauen Sie nur auf ngrams, die einen ganz anderen Wert, diese haben natürlich nur funktionieren, wenn Sie eine ausreichend große Anzahl von Dokumenten haben.

0

Phrases verfügt über einen konfigurierbaren Parameter threshold, der die statistische Grenze für die Förderung von Wortpaaren in Phrasen einstellt. (Größere Schwellenwerte bedeuten, dass weniger Paare zu Phrasen werden.)

Sie können dies anpassen, um einen größeren Anteil der beworbenen Phrasen mit Ihrer eigenen Ad-hoc-Intuition über "interessante" Phrasen zu vergleichen - aber diese Klasse verwendet immer noch einen ziemlich groben Methode, ohne Kenntnis von Grammatik oder Domänenwissen jenseits dessen, was im Korpus ist. Jeder Wert, der alle/die meisten gewünschten Sätze enthält, wird wahrscheinlich viele uninteressante enthalten, oder umgekehrt. Wenn Sie a priori wissen, dass bestimmte Wortgruppen von Bedeutung sind, können Sie den Korpus selbst vor dem (oder anstelle des) Kollokationsstatistik-basierten Prozesses Phrases vorverarbeiten, um diese zu einzelnen Tokens zu kombinieren.

+0

Vielen Dank gojomo :) Ich werde versuchen, die letztere Idee, die Sie vorgeschlagen, zu implementieren :) –