第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

當(dāng) ' '.join(x) 不起作用時(shí),在處理字符串列表后刪除逗號(hào)

當(dāng) ' '.join(x) 不起作用時(shí),在處理字符串列表后刪除逗號(hào)

皈依舞 2022-10-25 16:15:25
因此,我在 BERT 中輸入了用于標(biāo)記預(yù)測(cè)的句子數(shù)據(jù)幀,并與預(yù)測(cè)一起作為輸出接收到,句子分成單詞?,F(xiàn)在我想將拆分/標(biāo)記化的句子和預(yù)測(cè)的數(shù)據(jù)框恢復(fù)為原始句子。(當(dāng)然我有原始句子,但我需要執(zhí)行此過程,以使預(yù)測(cè)與句子標(biāo)記一致)original sentenceYou couldn't have done any better because if you could have, you would have.Post processing['[CLS]', 'You', 'couldn', "'", 't', 'have', 'done', 'any', 'better', 'because', 'if', 'you', 'could', 'have', ',', 'you', 'would', 'have', '.', '[SEP]']我確定了三個(gè)必要的過程。1. 刪除引號(hào) 2. 刪除 CLS ,SEP 及其多余的引號(hào)和逗號(hào), 3. 刪除分隔單詞的逗號(hào)并將它們合并。def fix_df(row):    sentences = row['t_words']     return remove_edges(sentences)def remove_edges(sentences):    x = sentences[9:-9]    return remove_qmarks(x)def remove_qmarks(x):    y = x.replace("'", "")    return join(y)def join(y):    z = ' '.join(y)    return za_df['sents'] = a_df.apply(fix_df, axis=1) 前兩個(gè)功能在很大程度上可以正常工作,但最后一個(gè)沒有。相反,我得到了一個(gè)看起來像這樣的結(jié)果。Y o u , c o u l d n , " " , t , h a v e, d o n e ,...逗號(hào)并沒有消失,而是文字被扭曲了。我肯定錯(cuò)過了一些東西。那會(huì)是什么?
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

結(jié)果字符串真的,真的看起來像一個(gè)完全正常的列表的字符串表示,所以讓 Python 將它安全地轉(zhuǎn)換回列表,按照將列表的字符串表示形式轉(zhuǎn)換為列表

import ast
result = """['[CLS]', 'You', 'couldn', "'", 't', 'have', 'done', 'any', 'better', 'because', 'if', 'you', 'could', 'have', ',', 'you', 'would', 'have', '.', '[SEP]']"""
result_as_list = ast.literal_eval(result)

現(xiàn)在我們有了這個(gè)

['[CLS]', 'You', 'couldn', "'", 't', 'have', 'done', 'any', 'better', 'because', 'if', 'you', 'could', 'have', ',', 'you', 'would', 'have', '.', '[SEP]']

讓我們?cè)倏纯茨愕牟襟E。首先,“刪除引號(hào)”。但是沒有任何(過時(shí)的)引號(hào),因?yàn)檫@是一個(gè)字符串列表;您在表示中看到的額外引號(hào)只是因?yàn)檫@就是Python 中字符串的表示方式。

接下來,“刪除開始和結(jié)束標(biāo)記”。由于這是一個(gè)列表,它們只是第一個(gè)和最后一個(gè)元素,無需進(jìn)一步計(jì)算:

result_as_list = result_as_list[1:-1]

接下來,“刪除逗號(hào)”。與第一步一樣,沒有(過時(shí)的)逗號(hào);它們是 Python顯示列表的一部分,但在實(shí)際數(shù)據(jù)中并不存在。

所以我們最終得到

['You', 'couldn', "'", 't', 'have', 'done', 'any', 'better', 'because', 'if', 'you', 'could', 'have', ',', 'you', 'would', 'have', '.']

可以使用以下方法將其連接回原始字符串

result_as_string = ' '.join(result_as_list)

剩下的唯一問題是 BERT 顯然將撇號(hào)、逗號(hào)和句號(hào)視為單獨(dú)的“單詞”:

You couldn ' t have done any better because if you could have , you would have .

需要一點(diǎn)替換:

result_as_string = result_as_string.replace(' ,', ',').replace(' .','.').replace(" ' ", "'")

你的句子回來了:

You couldn't have done any better because if you could have, you would have.

我看到的唯一問題是是否存在不屬于收縮的前導(dǎo)引號(hào)或結(jié)束引號(hào)。如果有必要,您可以將空格-引號(hào)-空格替換為更集中的替換,特別針對(duì)“不能”、“不能”、“不是”等。


查看完整回答
反對(duì) 回復(fù) 2022-10-25
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)