<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      第一次個人編程作業

      這個作業屬于哪個課程 計科23級34班
      這個作業要求在哪里 個人項目
      這個作業的目標 熟悉個人項目開發流程,使用Github進行源代碼管理

      Github 鏈接:https://github.com/KaryRafael/KaryRafael/tree/main/3223004469

      一、PSP表格

      PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
      Planning 計劃
      · Estimate · 估計這個任務需要多少時間 10 6
      Development 開發
      · Analysis · 需求分析 (包括學習新技術) 100 112
      · Design Spec · 生成設計文檔 50 40
      · Design Review · 設計復審 30 30
      · Coding Standard · 代碼規范 (為目前的開發制定合適的規范) 20 20
      · Design · 具體設計 100 120
      · Coding · 具體編碼 100 90
      · Code Review · 代碼復審 30 30
      · Test · 測試(自我測試,修改代碼,提交修改) 80 77
      Reporting 報告
      · Test Repor · 測試報告 40 45
      · Size Measurement · 計算工作量 20 25
      · Postmortem & Process Improvement Plan · 事后總結, 并提出過程改進計劃 50 50
      · 合計 630 645

      二、模塊接口的設計與實現

      2.1 模塊概述

      • 本模塊實現了一個基于TF-IDF特征提取余弦相似度計算的中文文本查重系統。系統采用模塊化設計,包含文件讀取、文本預處理、相似度計算結果輸出四個核心功能模塊。通過jieba分詞庫處理中文文本,利用scikit-learn機器學習庫實現TF-IDF向量化和余弦相似度計算,最終輸出0-1范圍內的相似度值,實現文本查重功能。

      2.2 模塊架構設計

      09233

      文本查重系統架構
      ├── 輸入層
      │   ├── read_file() - 文件讀取模塊
      │   └── 異常處理機制
      ├── 處理層  
      │   ├── preprocess_text() - 文本預處理模塊
      │   ├── calculate_similarity() - 核心計算模塊
      │   └── TF-IDF向量化 + 余弦相似度算法
      └── 輸出層
          └── write_result() - 結果輸出模塊
      
      函數 功能簡述
      read_file(file_path) 讀取指定路徑的文本文件內容
      preprocess_text(text) 使用 jieba 對中文文本進行分詞預處理
      calculate_similarity(original_text, copied_text) 核心函數,計算兩篇文本的余弦相似度
      write_result(output_path, similarity) 將計算結果寫入輸出文件
      main() 程序入口,解析命令行參數并調用上述函數完成整個流程

      2.3 核心算法設計

      • TF-IDF向量化算法
        TF-IDF算法通過詞頻(TF)和逆文檔頻率(IDF)的乘積評估詞語重要性。TF反映詞語在文檔中的出現頻率,IDF衡量詞語的普遍性,常見詞的IDF值較低。本系統將分詞后的文本轉換為TF-IDF向量,突出關鍵詞語特征,為相似度計算提供數值化基礎。
      • 余弦相似度計算算法
        余弦相似度通過計算向量夾角余弦值衡量文本相似度,公式為cos(θ) = (A·B)/(||A||×||B||)。該算法僅關注向量方向而非長度,有效消除文本長度差異的影響,特別適合處理長短不一的文本比較,計算結果范圍為0-1,值越大表示相似度越高。

      三、模塊接口部分的性能改進

      3.1 性能瓶頸識別

      09231

      1. TF-IDF向量化重復計算:每次調用calculate_similarity函數都會重新初始化TfidfVectorizer,導致相同的詞匯表構建和IDF計算重復執行,占用超過60%的計算時間。

      2. 分詞處理效率問題:jieba分詞在處理長文本時呈現非線性增長趨勢,特別是對于學術論文等大規模文本,分詞階段成為明顯的性能瓶頸。

      3. 文件I/O操作頻繁:多次獨立的文件讀寫操作在批量處理場景下累積耗時顯著,影響整體處理效率。

      4. 內存使用不夠優化:高維稀疏矩陣的存儲和處理在詞匯量較大時占用過多內存資源。

      3.2 性能改進思路與措施

      1. 向量化器復用機制:將TfidfVectorizer實例化移至模塊級別,通過全局變量或類封裝實現單例模式,避免重復初始化和訓練,預計可減少40%的計算時間。

      2. 分詞結果緩存系統:采用LRU緩存策略對preprocess_text函數進行裝飾,對相同文本內容直接返回緩存結果,減少重復分詞操作。

      3. 批量處理優化:重構main函數支持批量文件處理模式,減少頻繁的文件打開關閉操作,通過向量化器的一次fit_transform處理多個文檔對。

      4. 稀疏矩陣優化:利用scipy.sparse矩陣特性優化存儲結構,對高維特征向量采用壓縮存儲格式,降低內存占用。

      5. 并行計算引入:對于大規模文本對比任務,采用多進程并行處理不同文檔對,充分利用多核CPU資源。

      09232
      由圖可見,jieba 分詞相關函數(如 Tokenizer.load、Tokenizer.initialize 等)是消耗最大的函數。

      四、模塊部分單元測試

      4.1 文件讀取模塊測試

      • 目的:驗證文件讀取功能的正確性和健壯性
      # 測試用例1:正常讀取文件
      def test_read_file_normal(self):
          """測試正常讀取文件功能"""
          content = read_file(self.original_file)
          self.assertEqual(content, "今天天氣很好,適合出去散步。")
      
      # 測試用例2:讀取不存在的文件
      def test_read_file_not_exist(self):
          """測試讀取不存在的文件"""
          content = read_file("/根本不存在的文件.txt")
          self.assertIsNone(content)
      

      4.2 文本預處理模塊測試

      • 目的:驗證jieba分詞的正確性和邊界處理
      # 測試用例3:分詞功能測試
      def test_preprocess_text(self):
          """測試中文分詞功能"""
          result = preprocess_text("今天天氣很好")
          self.assertIsInstance(result, str)
          self.assertIn("今天", result)
          self.assertIn("天氣", result)
      
      # 測試用例4:空文本分詞測試
      def test_preprocess_empty_text(self):
          """測試空文本分詞"""
          result = preprocess_text("")
          self.assertEqual(result, "")
      

      4.3 相似度計算模塊測試

      • 目的:驗證核心算法在不同場景下的準確性
      # 測試用例5:相同文本相似度測試
      def test_similarity_same_text(self):
          """測試完全相同文本的相似度"""
          text = "這是一段測試文本"
          similarity = calculate_similarity(text, text)
          self.assertAlmostEqual(similarity, 1.0, places=1)
      
      # 測試用例6:完全不同文本相似度測試  
      def test_similarity_different_text(self):
          """測試完全不同文本的相似度"""
          text1 = "今天天氣很好"
          text2 = "明天要下雨了"
          similarity = calculate_similarity(text1, text2)
          self.assertLess(similarity, 0.5)
      
      # 測試用例7:部分相似文本測試
      def test_similarity_similar_text(self):
          """測試部分相似文本的相似度"""
          text1 = "今天天氣很好,適合散步"
          text2 = "今天天氣不錯,適合散步"
          similarity = calculate_similarity(text1, text2)
          self.assertGreater(similarity, 0.3)
          self.assertLess(similarity, 1.0)
      
      # 測試用例8:空文本相似度測試
      def test_similarity_empty_text(self):
          """測試空文本的相似度"""
          similarity = calculate_similarity("今天天氣很好", "")
          self.assertEqual(similarity, 0.0)
      

      4.4 結果輸出模塊測試

      • 目的:驗證文件讀取功能的正確性和健壯性
      # 測試用例9:寫入結果文件測試
      def test_write_result(self):
          """測試結果寫入文件功能"""
          write_result(self.output_file, 0.75)
          self.assertTrue(os.path.exists(self.output_file))
          with open(self.output_file, 'r', encoding='utf-8') as f:
              content = f.read()
          self.assertEqual(content, "0.75")
      

      4.5 邊界值測試模塊

      • 目的:驗證系統在極端情況下的穩定性
      # 測試用例10:邊界值測試 - 很長的文本
      def test_long_text(self):
          """測試長文本處理"""
          long_text = "很長的一段文本," * 100
          similarity = calculate_similarity(long_text, long_text)
          self.assertAlmostEqual(similarity, 1.0, places=1)
      
      # 測試用例11:邊界值測試 - 很短文本
      def test_short_text(self):
          """測試短文本處理"""
          similarity = calculate_similarity("好的", "好的")
          self.assertAlmostEqual(similarity, 1.0, places=1)
      
      # 測試用例12:特殊字符測試  
      def test_special_characters(self):
          """測試包含特殊字符的文本"""
          text1 = "測試文本!@#¥%……&*()"
          text2 = "測試文本!@#¥%……&*()"
          similarity = calculate_similarity(text1, text2)
          self.assertAlmostEqual(similarity, 1.0, places=1)
      
      # 測試用例13:單字文本測試
      def test_single_character_text(self):
          """測試單字文本的相似度"""
          similarity = calculate_similarity("好", "好")
          self.assertIsInstance(similarity, float)
          self.assertGreaterEqual(similarity, 0.0)
          self.assertLessEqual(similarity, 1.0)
      

      測試結果
      0924

      五、模塊部分異常處理說明

      5.1 異常處理總體設計目標

      在文本查重系統的計算模塊中,異常處理的設計目標主要包括:

      • 系統穩定性:確保程序在異常情況下不會崩潰

      • 用戶體驗:提供清晰的錯誤信息和處理結果

      • 數據完整性:防止數據丟失或損壞

      • 算法健壯性:保證核心算法在各種邊界情況下都能正常工作

      5.2具體異常類型及處理

      1. 空文本異常處理
        設計目標:防止空文本導致的算法計算錯誤,提供合理的默認相似度值,避免程序因空值而崩潰。
      def test_similarity_empty_text(self):
          """測試空文本的相似度計算"""
          # 場景:原文有內容,抄襲版為空文本
          similarity = calculate_similarity("今天天氣很好", "")
          
          # 驗證:空文本相似度應該返回0.0
          self.assertEqual(similarity, 0.0)
          print("空文本異常測試通過:系統正確處理了空文本情況")
      
      1. 單字文本異常處理
        設計目標:解決TF-IDF對單字文本處理不佳的問題,提供備選算法保證計算連續性,維持相似度計算的合理性。
      def test_single_character_text(self):
          """測試單字文本的相似度計算"""
          # 場景:兩個單字文本的比較
          similarity = calculate_similarity("好", "好")
          
          # 驗證:系統應正常處理而不崩潰,返回合理值
          self.assertIsInstance(similarity, float)
          self.assertGreaterEqual(similarity, 0.0)
          self.assertLessEqual(similarity, 1.0)
          print("單字文本異常測試通過:系統使用備選算法處理單字情況")
      
      1. 特殊字符文本異常處理
        設計目標:確保特殊字符不會影響文本處理流程,防止字符編碼問題導致的異常。
      def test_special_characters(self):
          """測試包含特殊字符的文本處理"""
          # 場景:包含多種特殊字符的文本
          text1 = "文本包含特殊符號!@#¥%……&*()和emoji??"
          text2 = "文本包含特殊符號!@#¥%……&*()和emoji??"
          
          similarity = calculate_similarity(text1, text2)
          
          # 驗證:特殊字符不應導致計算異常
          self.assertAlmostEqual(similarity, 1.0, places=1)
          print("特殊字符異常測試通過:系統正確處理了特殊字符文本")
      
      1. 超長文本處理異常
        設計目標:防止內存溢出,保證長文本處理的性能穩定,維持算法準確性不受文本長度影響。
      def test_long_text(self):
          """測試超長文本的處理能力"""
          # 場景:生成超長文本進行測試
          long_text = "這是一段很長的測試文本," * 1000
          
          similarity = calculate_similarity(long_text, long_text)
          
          # 驗證:長文本應正常處理且結果合理
          self.assertAlmostEqual(similarity, 1.0, places=1)
          print("超長文本異常測試通過:系統能夠處理長文本而不崩潰")
      
      1. 編碼異常處理
        設計目標:防止因文本編碼問題導致處理中斷,提供編碼錯誤的檢測和提示。
      def test_encoding_issues(self):
          """測試編碼異常的處理"""
          # 場景:混合編碼的文本(實際應在文件讀取層測試)
          # 這里測試計算模塊對異常編碼文本的容忍度
          try:
              # 模擬可能包含編碼問題的文本
              text1 = "正常文本" + "異常部分".encode('utf-8').decode('latin-1')
              similarity = calculate_similarity("測試", "測試")
              # 如果執行到此,說明系統對編碼問題有容忍度
              self.assertTrue(True)
          except Exception as e:
              # 系統應妥善處理編碼異常,而不是崩潰
              self.fail(f"編碼處理異常:{str(e)}")
          
          print("編碼異常測試通過:系統對編碼問題有適當容錯")
      
      1. 數值計算異常處理
        設計目標:防止當文本向量模長為零時,處理向量計算中的數值異常。
      def test_zero_vector_handling(self):
          """測試零向量情況的處理"""
          # 場景:創建會導致零向量的特殊情況
          # 注:實際中很難直接創建零向量,但系統應有防護機制
          
          # 通過極端文本測試系統的數值穩定性
          text1 = "。,!?"  # 只有標點符號
          text2 = "……"      # 特殊標點
          
          similarity = calculate_similarity(text1, text2)
          
          # 驗證:系統應返回有效數值,而不是崩潰
          self.assertIsInstance(similarity, float)
          self.assertGreaterEqual(similarity, 0.0)
          self.assertLessEqual(similarity, 1.0)
          print("數值計算異常測試通過:系統妥善處理了數值邊界情況")
      
      posted @ 2025-09-22 21:00  拉赫瑪尼諾芙  閱讀(8)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 91密桃精品国产91久久 | 好紧好爽午夜视频| 亚洲欧洲∨国产一区二区三区| 亚洲欧洲av一区二区| 粉嫩国产av一区二区三区| 亚洲69视频| 桃花岛亚洲成在人线AV| 久久日韩精品一区二区五区| 专干老肥熟女视频网站| 怀远县| 亚洲av无码牛牛影视在线二区 | 加勒比中文字幕无码一区| 蜜桃在线一区二区三区| 国内精品久久人妻无码不卡| 无码专区 人妻系列 在线 | 久久国产精品色av免费看| 熟女人妻视频| 精品国产乱码久久久人妻| 国产精品亚洲二区在线看| 成人性做爰aaa片免费看| 中文字幕结果国产精品| 日本午夜精品一区二区三区电影| 18岁日韩内射颜射午夜久久成人 | 丁香五月网久久综合| 色综合 图片区 小说区| 亚洲欧洲国产综合一区二区| 精品国产乱子伦一区二区三区| 欧美不卡无线在线一二三区观| 综合色一色综合久久网| 毛片无码一区二区三区| 极品尤物被啪到呻吟喷水| 九九热精品在线观看| 国产精品制服丝袜无码| 十八禁午夜福利免费网站| 国产精品一区二区三粉嫩| 亚洲真人无码永久在线 | 部精品久久久久久久久| 亚洲另类丝袜综合网| 弋阳县| 日韩狼人精品在线观看| 免费网站看av片|