国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ChatGPT | 分割Word文字及表格,優(yōu)化文本分析

這篇具有很好參考價值的文章主要介紹了ChatGPT | 分割Word文字及表格,優(yōu)化文本分析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

知識庫讀取Word內(nèi)容時,由于embedding切片操作,可能會出現(xiàn)表格被分割成多個切片的情況。這種切片方式可能導致“列名欄”和“內(nèi)容欄”之間的Y軸關系鏈斷裂,從而無法準確地確定每一列的數(shù)據(jù)對應關系,從而使得無法準確知道每一列的數(shù)據(jù)匯總。

用下面表格為例子:

級數(shù)

T1

T2

T3

T4

T5

T6

T7

子等

T1.1-1.2

T2.1-2.2

T3.1-3.3

T4.1-4.3

T5.1-5.2

T6.1-6.2

T7

專業(yè)名稱

實習

工程師

助理

工程師

工程師

高級

工程師

資深

工程師

專家級

工程師

首席

工程師

學歷

本科及以上

本科及以上

本科及以上

本科及以上

本科及以上

碩士及以上

碩士及以上

工作經(jīng)驗

1年以內(nèi)(兼職)

1-3年

3-5年

5-8年

8-10年

10-15年

15年以上

級數(shù)

T1

T2

T3

T4

T5

T6

T7

子等

T1.1-1.2

T2.1-2.2

T3.1-3.3

T4.1-4.3

T5.1-5.2

T6.1-T6.2

T7

專業(yè)名稱

實習

工程師

助理

工程師

工程師

高級

工程師

資深

工程師

專家級

工程師

首席

工程師

分值

60-64分

65-69分

70-79分

80-89分

90-94分

95-97分

98-100分

直接演示一下本文代碼運行的對比結果,分別展示“無優(yōu)化”和“有優(yōu)化”的問答結果,標綠框的是回答錯誤的:

ChatGPT | 分割Word文字及表格,優(yōu)化文本分析,ChatGPT,langchain,python,chatgpt,word,知識庫

本文幫助提高文本處理和向量化的效率,以下是對每個步驟的詳細說明,詳見md_embedding.py源碼:

  1. 分離文字和表格:將原始Word文檔中的文字內(nèi)容和表格分開保存。將文字內(nèi)容保存為純文本的Markdown文件,而將表格單獨保存為多個只包含Markdown表格的Markdown文件。例如,一個Word文檔包含2個表格,即生成1個純文字Markdown文件,2個純表格的Markdown文件。
  2. 切片并向量化處理:對于多個Markdown文件,按照固定的大小切片,確保切片大小是大于Markdown表格的體積,以確保包含完整的表格。然后對這些切片進行向量化處理。

這種方法的優(yōu)點是能夠有效地分離文字和表格,并通過切片和向量化處理提高處理效率。通過將表格轉化為向量表示,可以更方便地進行后續(xù)的計算和分析。同時,由于切片時保證了表格的完整性,可以避免表格被切斷導致信息丟失的問題。

有優(yōu)化的embedding的源碼, md_embedding.py 如下:

import os
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.document_loaders import DirectoryLoader
from langchain.document_loaders import UnstructuredFileLoader
from langchain.document_loaders import UnstructuredWordDocumentLoader

from docx import Document



def convert_word_tables_to_markdown(file_path, output_folder):
    def convert_table_to_markdown(table):
        markdown = ""
        for row in table.rows:
            cells = [cell.text.replace('\n', '').replace('|', '|') for cell in row.cells]
            markdown += "|".join(cells) + "|\n"
        return markdown

    doc = Document(file_path)
    
    # 創(chuàng)建輸出文件夾(如果不存在)
    os.makedirs(output_folder, exist_ok=True)
    
    # 將每個表格轉換為Markdown并保存為單獨的TXT文件
    for i, table in enumerate(doc.tables):
        markdown = convert_table_to_markdown(table)

        filename_without_ext=os.path.splitext(os.path.basename(file_path))[0]
        # 將Markdown表格寫入TXT文件
        output_file_path = os.path.join(output_folder, filename_without_ext+f"_output_{i+1}.md")
        with open(output_file_path, "w", encoding='utf-8') as file:
            file.write(markdown)
            
    return output_folder



def remove_tables_save_as_md(file_path, output_file_path):
    doc = Document(file_path)
    
    # 移除所有表格
    for table in doc.tables:
        table._element.getparent().remove(table._element)

    # 獲取剩余內(nèi)容的純文本,并構建Markdown格式字符串
    content = [p.text.strip() for p in doc.paragraphs if p.text.strip()]
    markdown_content = '\n\n'.join(content)

    # 保存為MD文件
    with open(output_file_path, 'w', encoding='utf-8') as file:
        file.write(markdown_content)
        
    return output_file_path


abs_docx_path='D:\CloudDisk\OpenAI\博客的源碼\Docx表格優(yōu)化\帶表格DOCX.docx'
embedding_folder_path=os.path.dirname(abs_docx_path)+'\\md_txt'
os.makedirs(embedding_folder_path,exist_ok=True)

convert_word_tables_to_markdown(abs_docx_path,embedding_folder_path)
remove_tables_save_as_md(abs_docx_path,embedding_folder_path+'\\'+os.path.basename(abs_docx_path)+'.md')


# 1 定義embedding
embeddings = OpenAIEmbeddings(openai_api_key='aaaaaaaaaaaaaaaaaa',
                              openai_api_base='bbbbbbbbbbbbbbbbbbbbbbbbbb',
                              openai_api_type='azure',
                              model="text-embedding-ada-002",
                              deployment="lk-text-embedding-ada-002",
                              chunk_size=1)

# 2 定義文件 
loader = DirectoryLoader(embedding_folder_path, glob="**/*.md")
pages = loader.load_and_split()

# 按固定尺寸切分段落
text_splitter_RCTS = RecursiveCharacterTextSplitter(
    chunk_size = 500,
    chunk_overlap = 100
)

split_docs_RCTS = text_splitter_RCTS.split_documents(pages)
for item in split_docs_RCTS:
    print(item)
    print('')

#寫入向量數(shù)據(jù)庫
print(f'寫入RCTS向量數(shù)據(jù)庫')
vectordb = Chroma.from_documents(split_docs_RCTS, embedding=embeddings, persist_directory="./MD_RCTS/")
vectordb.persist()

?無優(yōu)化的embedding的源碼,docx_embedding.py 如下:

import os
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.document_loaders import UnstructuredWordDocumentLoader

# 1 定義embedding
embeddings = OpenAIEmbeddings(openai_api_key='aaaaaaaaaa',
                              openai_api_base='bbbbbbbbbbb',
                              openai_api_type='azure',
                              model="text-embedding-ada-002",
                              deployment="lk-text-embedding-ada-002",
                              chunk_size=1)

docx_file_path="D:\CloudDisk\OpenAI\博客的源碼\Docx表格優(yōu)化\帶表格DOCX.docx"

# 2 定義文件 
loader = UnstructuredWordDocumentLoader(docx_file_path)
pages = loader.load_and_split()

# 按固定尺寸切分段落
text_splitter_RCTS = RecursiveCharacterTextSplitter(
    chunk_size = 500,
    chunk_overlap = 100
)

split_docs_RCTS = text_splitter_RCTS.split_documents(pages)
for item in split_docs_RCTS:
    print(item)
    print('')

#寫入向量數(shù)據(jù)庫
print(f'寫入RCTS向量數(shù)據(jù)庫')
vectordb = Chroma.from_documents(split_docs_RCTS, embedding=embeddings, persist_directory="./Word_RCTS/")
vectordb.persist()
 

?問答測試?chat_qa.py:文章來源地址http://www.zghlxwxcb.cn/news/detail-612333.html

import time
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.chat_models import AzureChatOpenAI

  
def getQuestionList():
    question_list=[
    '級數(shù)=T6,專業(yè)名稱是?',
    '要求碩士學歷有哪些級數(shù)?',
    '分值大于等于70是哪些級數(shù)?',
    '可以兼職的是什么級數(shù)?',
    '需要工作經(jīng)驗滿5年以上是哪些專業(yè)?',
    '首席工程師要求什么學歷,工作經(jīng)驗多少年',
    '自上而下的原則,是指?',
    '現(xiàn)場答辯,是指?',
    '級數(shù)=T3,專業(yè)名稱是?',
    '級數(shù)=T4,專業(yè)名稱是?',
    ]

    return question_list

embeddings = OpenAIEmbeddings(openai_api_key='aaaaaaaaaaaaaaaaa',
                              openai_api_base='bbbbbbbbbbbbbbbbbbbbbbb',
                              openai_api_type='azure',
                              model="text-embedding-ada-002",
                              deployment="lk-text-embedding-ada-002",
                              chunk_size=1)


openAiLLm = AzureChatOpenAI(openai_api_key='aaaaaaaaaaaaaaaaaaaaaaaaaaaa', #注意這里,不同 API_BASE 使用不同 APK_KEY
                              openai_api_base="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
                              openai_api_version='2023-03-15-preview',
                              deployment_name='lk-gpt-35-turbo-16k',
                              temperature=0.9,
                              model_name="gpt-35-turbo-16k",
                              max_tokens=300)

print('------r---r---r----')

word_RTCS = Chroma(persist_directory="./Word_RCTS/", embedding_function=embeddings)
word_qa = RetrievalQA.from_chain_type(llm=openAiLLm,chain_type="stuff",retriever=word_RTCS.as_retriever(),return_source_documents = False) 

md_RTCS = Chroma(persist_directory="./MD_RCTS/", embedding_function=embeddings)
md_qa = RetrievalQA.from_chain_type(llm=openAiLLm,chain_type="stuff",retriever=md_RTCS.as_retriever(),return_source_documents = False)

#print(qa_RTCS)#查看自定義Prompt的結構體內(nèi)容
for i in range(0,len(getQuestionList())):
    question_text=getQuestionList()[i]
    
    # 進行問答
    wordchat = word_qa({"query": question_text}) 
    wordquery = str(wordchat['query'])
    wordresult = str(wordchat['result'])
    
    print("問題: ",wordquery)
    print("無優(yōu)化-結果:",wordresult)
    time.sleep(1)#每次提問間隔1s
    
    
    csvchat = md_qa({"query": question_text}) 
    csvquery = str(csvchat['query'])
    csvresult = str(csvchat['result'])
    #print("MD問題: ",csvquery)
    print("有優(yōu)化-結果:",csvresult)
    print('----------------------------------------')

    time.sleep(1)#每次提問間隔1s
    

到了這里,關于ChatGPT | 分割Word文字及表格,優(yōu)化文本分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 自然語言處理從入門到應用——LangChain:索引(Indexes)-[文本分割器(Text Splitters)]

    分類目錄:《大模型從入門到應用》總目錄 LangChain系列文章: 基礎知識 快速入門 安裝與環(huán)境配置 鏈(Chains)、代理(Agent:)和記憶(Memory) 快速開發(fā)聊天模型 模型(Models) 基礎知識 大型語言模型(LLMs) 基礎知識 LLM的異步API、自定義LLM包裝器、虛假LLM和人類輸入LLM(

    2024年02月12日
    瀏覽(58)
  • 使用poi-tl向word插入圖片、文本、表格行循環(huán)

    使用poi-tl向word插入圖片、文本、表格行循環(huán)

    工作中難免會向word中操作數(shù)據(jù),本文主要介紹poi-tl的使用,先來看效果圖 核心介紹: 標簽 1、插入文本標簽 : {{var}} 2、插入圖片標簽: {{@var}} 操作步驟: 1、引入依賴 2、Java核心代碼 官方網(wǎng)址:http://deepoove.com/poi-tl/ 1、準備模版,定義好需要的標簽 2、查詢模版 3、獲取需要填

    2024年02月05日
    瀏覽(151)
  • ChatGPT 之 LangChain的文本切割方法對比

    ChatGPT 之 LangChain的文本切割方法對比

    本文來自http://blog.csdn.net/hellogv/?,引用必須注明出處! ChatGPT面向對話格式的文本理解很好,但如果要把網(wǎng)絡上的文章讓ChatGPT直接分析則會有格式的問題。文本清洗是個大課題,講起來需要很多篇幅,優(yōu)化起來前路漫漫。 本文基于稍微加工后的文本內(nèi)容,使用LangChain的Char

    2024年02月09日
    瀏覽(17)
  • wps/word 如何讓表格的標題和表格名稱文本(表1-1 xxx)跨頁顯示(已解決)

    wps/word 如何讓表格的標題和表格名稱文本(表1-1 xxx)跨頁顯示(已解決)

    打開wps? ?創(chuàng)建一個跨頁的表格表格,如下圖 大家都知道 表格標題跨頁? 就是1)在菜單表格工具 點擊重復標題? ?或者 2)表格屬性--》行--》在各頁頂端以標題行形式出現(xiàn),詳細如下圖。 1) 第一種方法,點擊表格 第二種方法: 點擊表格 --》右鍵----》表格屬性 ? ? 如下圖

    2024年02月07日
    瀏覽(60)
  • Python自動化小技巧18——自動化資產(chǎn)月報(word設置字體表格樣式,查找替換文字)

    Python自動化小技巧18——自動化資產(chǎn)月報(word設置字體表格樣式,查找替換文字)

    案例背景 每月都要寫各種月報,經(jīng)營管理月報,資產(chǎn)月報.....這些報告文字目標都是高度相似的,只是需要替換為每個月的實際數(shù)據(jù)就行,如下: ? (打碼是怕信息泄露.....) 可以看到,這個報告的都是高度模板化,我們只需要對里面的某些文字進行替換,例如2023年7月?lián)Q成2

    2024年02月12日
    瀏覽(23)
  • c++ word簡單的寫文本與畫表格只支持docx

    c++ word簡單的寫文本與畫表格只支持docx

    簡單使用的代碼如下所示: #include \\\"stdafx.h\\\" #include windows.h #include \\\"minidocx.hpp\\\" using namespace docx; using namespace std; std::string GB2312ToUTF8(const std::string gb2312) { ?? ?int len = MultiByteToWideChar(CP_ACP, 0, gb2312.c_str(), -1, NULL, 0); ?? ?wchar_t* wstr = new wchar_t[len + 1]; ?? ?memset(wstr, 0, len + 1); ?? ?M

    2024年02月12日
    瀏覽(23)
  • element ui表格showOverflowTooltip文字過長優(yōu)化方案

    element ui表格showOverflowTooltip文字過長優(yōu)化方案

    在 table 組件展示數(shù)據(jù)時,對于文本過長的單元格添加 show-overflow-tootip 屬性后,tooltip 的寬度會撐滿屏幕 從 DOM 節(jié)點可以看到,當鼠標進入 show-overflow-tooltip 屬性作用的單元格時,body 下會多一個 class 為 el-tooltip__popper 的節(jié)點,這個節(jié)點就是真實的 tooltip 的 DOM 看來,一種非常直

    2023年04月22日
    瀏覽(29)
  • ChatGPT+Word的智能化文字生成和應用

    ChatGPT+Word的智能化文字生成和應用

    在Word中引入OpenAI代碼需要使用VBA編輯器。以下是在Word中引入OpenAI代碼的步驟: 打開Word文檔,按下Alt + F11鍵打開VBA編輯器。 在VBA編輯器中,選擇“插入”菜單,然后選擇“模塊”。 在新建的模塊中,將OpenAI代碼粘貼到模塊中。 保存模塊并關閉VBA編輯器。 在Word文檔中,選擇

    2024年02月02日
    瀏覽(21)
  • 【LangChain】如何本地部署基于chatGPT的實時文檔和表格數(shù)據(jù)的助手,在自己的數(shù)據(jù)上構建chatGPT?

    【LangChain】如何本地部署基于chatGPT的實時文檔和表格數(shù)據(jù)的助手,在自己的數(shù)據(jù)上構建chatGPT?

    (1) LangChain 是一個用于自然語言處理的 Python 庫,它的目標是嘗試簡化自然語言處理任務,提高處理效率和準確性。 該庫提供了一組易于使用的函數(shù)和工具,可以幫助你實現(xiàn)各種自然語言處理任務,例如語句分割、分詞、詞性標注、命名實體識別、情感分析等。與其它自然

    2024年02月08日
    瀏覽(24)
  • LLMs之RAG:基于LangChain框架利用ChatGPT的API實現(xiàn)一個與在線網(wǎng)頁交互的對話機器人—五大思路步驟—加載文檔WebBaseLoader網(wǎng)址文件→文檔分割(chunk_size=50

    LLMs之RAG:基于LangChain框架利用ChatGPT的API實現(xiàn)一個與在線網(wǎng)頁交互的對話機器人—五大思路步驟—加載文檔WebBaseLoader網(wǎng)址文件→文檔分割(chunk_size=500)→文本嵌入化(OpenAIEmbeddings)并存儲到向量庫(Chroma)→構造Prompt(拉取一個對象并將其返回為 LangChain對象)→定義LLMs(ChatOpenAI)→輸入

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包