Hier ist, was meine Beispieldaten wie folgt aussieht:N-Gramm-Analyse in Python
I 1-2 Gramm auf Abfrage zur Durchführung benötigen, und berechnen Sie die Summe und durchschnittlich Eindruck bei den Anfragen zugeordnet . Jetzt habe ich herausgefunden, wie die Impressionen mithilfe der unten stehenden Codes aggregiert werden.
def n_grams(txt):
grams = list()
words = txt.split(' ')
for i in range(len(words)):
for k in range(1, len(words) - i + 1):
grams.append(" ".join(words[i:i+k]))
return pd.Series(grams)
counts = df['query'].apply(n_grams).join(df)
result = counts.drop("query", axis=1).set_index("impression").unstack() .rename("ngram").dropna().reset_index() .drop("level_0",
axis=1).groupby("ngram")["impression"].sum()
result = result.to_frame()
result['query'] = result.index
result['ngram'] =result['query'].str.split().apply(len)
result = result.groupby(['ngram','query'])['impression'].sum()
result = result.reset_index()
result = result.sort_values(['ngram', 'impression'], ascending=[True, False])
Die Ergebnisse liefern wie:
Hier habe ich eine andere Spalte müssen mit dieser Abfragen zugeordnet, um die durchschnittlichen Eindruck zeigen. Zum Beispiel erscheint das Wort "Ernährung" viermal, also sollte die durchschnittliche Impression 100/4 = 25 sein. Außerdem möchte ich zeigen, wie oft diese Abfrage in einer anderen Spalte erscheint. Das Endergebnis sollte wie folgt aussehen: