簡體   English   中英

如何將 tf-idf 應用於文本行

[英]How to apply tf-idf to rows of text

我有幾行簡介(文本格式),我想使用 tf-idf 來定義每個單詞的權重。 下面是代碼:

def remove_punctuations(text):
    for punctuation in string.punctuation:
        text = text.replace(punctuation, '')
    return text
df["punc_blurb"] = df["blurb"].apply(remove_punctuations)

df = pd.DataFrame(df["punc_blurb"])

vectoriser = TfidfVectorizer()
df["blurb_Vect"] = list(vectoriser.fit_transform(df["punc_blurb"]).toarray())

df_vectoriser = pd.DataFrame(x.toarray(),
columns = vectoriser.get_feature_names())
print(df_vectoriser)

我得到的只是一個龐大的數字列表,我什至不確定它是給我的 TF 還是 TF-IDF,因為頻繁詞(the、and 等)的得分都超過 0。

目標是查看下面顯示的 tf-idf 列中的權重,我不確定我是否以最有效的方式執行此操作:

目標輸出表

如果您使用TfidfVectorizer則不需要標點符號去除劑。 憑借默認的token_pattern參數,它將自動處理標點符號:

from sklearn.feature_extraction.text import TfidfVectorizer

df = pd.DataFrame({"blurb":["this is a sentence", "this is, well, another one"]})
vectorizer = TfidfVectorizer(token_pattern='(?u)\\b\\w\\w+\\b')
df["tf_idf"] = list(vectorizer.fit_transform(df["blurb"].values.astype("U")).toarray())
vocab = sorted(vectorizer.vocabulary_.keys())
df["tf_idf_dic"] = df["tf_idf"].apply(lambda x: {k:v for k,v in dict(zip(vocab,x)).items() if v!=0})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM