我已經定義了一個函式,它根據它的 pos_tag 從句子中提取單詞。
def get_trigram(pos_1, pos_2, pos_3):
all_trigram = []
for j in range(len(df)):
trigram = []
if len(df['pos'][j]) >= 2:
for i in range(len(df['pos'][j])):
if df['pos'][j][i-2][1] == pos_1 and df['pos'][j][i-1][1] == pos_2 and df['pos'][j][i][1] == pos_3:
trigram.append(df['pos'][j][i-2][0] " " df['pos'][j][i-1][0] " " df['pos'][j][i][0])
all_trigram.append(trigram)
return all_trigram
該函式運行并且可以作業,但是串列 all_trigram 的 len 小于我正在運行的資料幀的原始 len。我懷疑是因為這行代碼
if len(df['pos'][j]) >= 2:
在我的函式內部,因此對于少于 2 的行,它們不會被捕獲為空白。我如何構造 else 陳述句,我可以把它放在哪里,這樣 all_trigrams 串列也可以包含一個空白串列,用于那些少于 2 的行?
這是df的示例:

uj5u.com熱心網友回復:
all_trigram當條件len(df['pos'][j]) >= 2:不滿足時,追加一個空串列。這將確保 的大小all_trigram與資料框的大小相同。
def get_trigram(pos_1, pos_2, pos_3):
all_trigram = []
for j in range(len(df)):
trigram = []
if len(df['pos'][j]) >= 2:
for i in range(len(df['pos'][j])):
if df['pos'][j][i-2][1] == pos_1 and df['pos'][j][i-1][1] == pos_2 and df['pos'][j][i][1] == pos_3:
trigram.append(
df['pos'][j][i-2][0] " " df['pos'][j][i-1][0] " " df['pos'][j][i][0])
all_trigram.append(trigram)
else:
all_trigram.append([])
return all_trigram
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496469.html
上一篇:使用JavaScript編輯功能
