各位先進們好,近期研究文本分類,想知道是否有方式可修改為大量輸入與匯出?
1
!pip install scikit-learn
!pip install pandas
2
import pandas as pd
read = pd.read_excel("20200824142914.xlsx").values.tolist()
corpus = [row[0] for row in read]
intents = [row[1] for row in read]
3
from sklearn.feature_extraction.text import CountVectorizer
feature_extractor = CountVectorizer(
analyzer="word", ngram_range=(1, 2), binary=True,
token_pattern=r'([a-zA-Z]+|\w)')
X = feature_extractor.fit_transform(corpus)
4
from sklearn.linear_model import LogisticRegression
INTENT_CLASSIFY_REGULARIZATION = "l2"
lr = LogisticRegression(penalty=INTENT_CLASSIFY_REGULARIZATION,
class_weight='balanced')
lr.fit(X, intents)
5
user_input = ['查詢明天的降雨量']
X2 = feature_extractor.transform(user_input)
6
lr.predict(X2)
7
probs = lr.predict_proba(X2)[0]
for predict_intent, prob in sorted(zip(lr.classes_, probs), key = lambda x: x[1],reverse = True):
print(predict_intent, prob)
user_input = ['查詢明天的降雨量'] 改為多筆即可,例如:
user_input = ['查詢明天的降雨量', '查詢後天的降雨量']
您好,想知道除此之外~是否有例如透過匯入excel、text等文本的方法呢?
自己嘗試過調整但是都錯誤,謝謝您!
建立一個只有一個欄位的 Excel 檔案,利用下列程式碼讀入:
import pandas as pd
df=pd.read_excel('test.xlsx')
user_input = df.values
之後照做即可。
您好,抱歉嘗試了一天還是無法成功執行,會出現AttributeError: 'numpy.ndarray' object has no attribute 'lower'
不知道我哪邊出了錯誤~
我有更新目前我的所有程式碼,若前輩願意在懇請次指點,感謝
請利用程式區塊框起來,並附上資料,別人才可以迅速幫你解決問題。
您好,已更新內文!
我是將您建議的import pandas as pd df=pd.read_excel('test.xlsx') user_input = df.values
加入第5段的程式碼做調整,但是會出現AttributeError: 'numpy.ndarray' object has no attribute 'lower'
修改如下:
import pandas as pd
df = pd.read_excel("20200824142914.xlsx")
from sklearn.feature_extraction.text import CountVectorizer
feature_extractor = CountVectorizer(
analyzer="word", ngram_range=(1, 2), binary=True,
token_pattern=r'([a-zA-Z]+|\w)')
X = feature_extractor.fit_transform(df.語句.values)
X.shape
# 意圖 轉為代碼
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
intents = encoder.fit_transform(df.意圖)
# 訓練
from sklearn.linear_model import LogisticRegression
INTENT_CLASSIFY_REGULARIZATION = "l2"
lr = LogisticRegression(penalty=INTENT_CLASSIFY_REGULARIZATION,
class_weight='balanced')
lr.fit(X, intents)
# 大量測試
df_input = pd.read_excel("test_data.xlsx")
user_input = df_input.iloc[:,0].values
X2 = feature_extractor.transform(user_input)
print(lr.predict(X2))
print(encoder.classes_[lr.predict(X2)])
test_data.xlsx 為 20200824142914.xlsx 第一欄,如下圖,你可以任意修改資料。
了解,針對您提供的協助,後續我會自己鑽研調整,感謝您的指導!
感謝分享
你把要分析的語句做成excel或text檔案。
把檔案讀進來後,用迴圈跑你PO的範例網頁中"預測"的部分。
在這個迴圈中跑分析,然後把結果存到另一個檔案或直接秀出來就可以了不是嗎?
如果看不懂我寫的怎麼做的話,我覺得你需要更扎實的基礎程式設計練習。或是拿錢出來請人做比較快,真的!XD