日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用PyODPS節點進行結巴中文分詞

如您需進行文本分析、信息檢索、文本挖掘與特征提取、構建搜索引擎、機器翻譯、訓練語言模型等場景應用,則可通過DataWorks的PyODPS節點使用開源結巴中文分詞工具,將中文文本分割為詞語,進行相關文本的分析處理。同時,若默認詞庫無法滿足您的業務需要,您還可通過創建自定義詞庫來增加分詞或修改分詞結果。

背景信息

DataWorks提供的PyODPS節點支持直接編輯Python代碼并使用MaxCompute的Python SDK進行數據開發。PyODPS節點分為PyODPS 2節點和PyODPS 3節點類型,PyODPS 3提供了更簡潔易用的API接口,支持通過PIP直接安裝,可以更好地利用MaxCompute的資源和特性,建議您使用PyODPS 3節點進行開發操作,詳情請參見開發PyODPS 3任務。

重要
  • PyODPS 3僅支持Python 3.x版本,PyODPS 2同時支持Python 2.x和Python 3.x版本,如您需要使用Python 2.x版本,則僅支持選擇PyODPS 2節點。

  • 本文的操作僅作為示例展示功能,不建議用于實際的生產環境。

前提條件

  1. 已創建DataWorks工作空間,詳情請參見創建工作空間。

  2. 已創建MaxCompute數據源并綁定至工作空間,詳情請參見創建MaxCompute數據源并綁定至工作空間

準備工作:下載開源結巴中文分詞包

進入GitHub,按照下圖指引下載開源結巴分詞中文包clone

實踐一:使用開源詞包進行分詞

  1. 創建業務流程,操作詳情請參見創建業務流程。

  2. 創建MaxCompute資源并上傳jieba-master.zip包。

    1. 右鍵單擊創建的業務流程,選擇新建資源 > MaxCompute > Archive。

    2. 新建資源對話框中,配置各項參數,完成后單擊新建

      新建資源核心參數配置說明如下。

      參數

      描述

      上傳文件

      單擊點擊上傳,根據界面提示選擇已下載的jieba-master.zip文件。

      名稱

      資源的名稱,無需和上傳的文件名保持一致,但需要符合命名規范。您可根據界面提示自定義資源名稱,本實踐名稱示例配置為jieba-master.zip。

    3. 單擊工具欄中的提交圖標,根據界面提示提交新建的資源。

  3. 創建測試數據表jieba_test和測試結果表jieba_result。

    右鍵單擊創建的業務流程,選擇新建表 > MaxCompute > ,根據界面提示創建表,并使用DDL模式配置表的字段信息。創建完成后,提交表到開發環境。建表相關操作,詳情請參見創建并使用MaxCompute表。

    本實踐需要創建的兩個表的配置要點如下。

    表名

    DDL語句

    作用

    jieba_test

    CREATE TABLE jieba_test (
        `chinese` string,
        `content` string
    );

    用于存儲測試的數據。

    jieba_result

    CREATE TABLE jieba_result (
        `chinese` string
    ) ;

    用于存儲分詞測試結果數據。

  4. 下載測試數據并導入測試數據表jieba_test。

    1. 單擊分詞測試數據下載測試數據jieba_test.csv至本地。

    2. 數據開發頁面,單擊導入圖標。

    3. 將本地數據導入開發表對話框,輸入需要導入數據的測試表jieba_test并選中,單擊下一步。

    4. 上傳您下載至本地的jieba_test.csv文件,配置上傳信息并預覽數據,單擊下一步。

    5. 選中按名稱匹配,單擊導入數據。

  5. 創建PyODPS 3節點。

    1. 右鍵單擊創建的業務流程,選擇新建節點 > MaxCompute > PyODPS 3。

    2. 新建節點對話框輸入名稱(示例為word_split),單擊確認。

  6. 使用開源詞包測試運行分詞代碼。

    在PyODPS 3節點中運行下方示例代碼,對上傳至jieba_test表中的測試數據進行分詞,并回顯分詞結果表的前十行數據。

    def test(input_var):
        import jieba
        result = jieba.cut(input_var, cut_all=False)
        return "/ ".join(result)
    
    # odps.stage.mapper.split.size 可用于提高執行并行度
    hints = {
        'odps.isolation.session.enable': True,
        'odps.stage.mapper.split.size': 64,
    }
    libraries =['jieba-master.zip']  # 引用您的 jieba-master.zip 壓縮包
    src_df = o.get_table('jieba_test').to_df()  # 引用您的 jieba_test 表中的數據
    result_df = src_df.chinese.map(test).persist('jieba_result', hints=hints, libraries=libraries)
    print(result_df.head(10))  # 查看分詞結果前10行,更多數據需要在表 jieba_result 中查看
    說明

    odps.stage.mapper.split.size可用于提高執行并行度,詳情請參見Flag參數列表。

  7. 查看運行結果。

    運行完成后,您可通過如下方式查看結巴分詞程序的運行結果:

    • 方式一:在頁面下方的運行日志區域查看。運行

    • 方式二:在頁面左側單擊臨時查詢按鈕,創建一個臨時查詢節點,查看測試結果表jieba_result中的結果數據。

      select * from jieba_result;

實踐二:使用自定義詞庫進行分詞

如果開源結巴分詞的默認詞庫無法滿足您的需求,則您可使用自定義的詞庫對分詞結果進行進一步修正,以下為您示例如何使用自定義詞庫進行分詞。

  1. 創建MaxCompute資源。

    PyODPS自定義函數可讀取上傳至MaxCompute的資源(表資源或文件資源),此時,自定義函數需要寫為閉包函數或Callable類。

    說明

    您可使用DataWorks的注冊MaxCompute函數功能引用復雜的自定義函數,詳情請參見創建并使用自定義函數。

    本實踐以使用閉包函數的方式,引用上傳至MaxCompute的資源文件(即自定義詞庫)key_words.txt。

    1. 創建File類型的MaxCompute函數。

      右鍵單擊創建的業務流程,選擇新建資源 > MaxCompute > File,輸入資源名稱key_words.txt后單擊新建。

    2. 輸入自定義詞庫內容并保存、提交。

      以下為自定義詞庫的示例,您可根據自己的測試需求輸入合適的自定義詞庫。

      增量備份
      安全合規
  2. 使用自定義詞庫測試運行分詞代碼。

    在PyODPS 3節點中運行下方示例代碼,對上傳至jieba_test表中的測試數據進行分詞,并回顯分詞結果表的前十行數據。

    def test(resources):
        import jieba
        fileobj = resources[0]
        jieba.load_userdict(fileobj)
    
        def h(input_var):  # 在嵌套函數h()中,執行詞典加載和分詞
            result = jieba.cut(input_var, cut_all=False)
            return "/ ".join(result)
    
        return h
    
    # odps.stage.mapper.split.size 可用于提高執行并行度
    hints = {
        'odps.isolation.session.enable': True,
        'odps.stage.mapper.split.size': 64,
    }
    libraries =['jieba-master.zip']  # 引用您的 jieba-master.zip 壓縮包
    src_df = o.get_table('jieba_test').to_df()  # 引用您的 jieba_test 表中的數據
    
    file_object = o.get_resource('key_words.txt') # get_resource() 引用 MaxCompute 資源
    mapped_df = src_df.chinese.map(test, resources=[file_object])  # map調用函數,并傳遞 resources 參數
    result_df = mapped_df.persist('jieba_result2', hints=hints, libraries=libraries)
    print(result_df.head(10))  # 查看分詞結果前10行,更多數據需要在表 jieba_result2 中查看
    說明

    odps.stage.mapper.split.size 可用于提高執行并行度,詳情請參見Flag參數列表

  3. 查看運行結果。

    運行完成后,您可通過如下方式查看結巴分詞程序的運行結果:

    • 方式一:在頁面下方的運行日志區域查看。分詞結果udf

    • 方式二:在頁面左側單擊臨時查詢按鈕,創建一個臨時查詢節點,查看測試結果表jieba_result2中的結果數據。

      select * from jieba_result2;
  4. 對比自定義詞庫與開源詞包的運行結果。

    結果對比