1. 程式人生 > >語料中篩選出英文單詞並統計詞頻,正則切割匹配

語料中篩選出英文單詞並統計詞頻,正則切割匹配

1.正則的使用匹配
2.dic.setdefault()的使用
3、內建函式enumerate(sequence,start=0)的使用
4、內建函式sorted(),key,reversed引數設定
5、str.lower()string大小寫轉換
#coding:utf-8
import re
import os
import time
import codecs

PATH = os.path.dirname(__file__)

s = u'what a Beautiful woRld'.lower()
pattern = re.compile(u'[^a-z]+', re.U)#在非英文出進行切割
for con in pattern.split(s.lower()):#將所有英文轉化為小寫
    if len(con) <= 1:
        continue
    else:
        print con

def get_english_words():
    '''過濾出語料中夾雜在漢語中的英文單詞,並統計出現的詞頻'''
    eng_freq_dic = {}
    pattern = re.compile(u'[^a-z]+', re.U)
    cut_filename = r'E:\SVN\linguistic_model\data\combine_msg_comment.txt'
    with codecs.open(cut_filename, encoding='utf-8') as f:
        for line in f.readlines():
            for con in pattern.split(line.lower()):
                if len(con) <= 1:#過濾掉單字母
                    continue
                else:
                    count = eng_freq_dic.setdefault(con, 0) + 1 #若沒有該key,則儲存該key且設value其為0。若有則value加1
                    eng_freq_dic[con] = count#整個英文單詞及其出現的頻度
    eng_filename = os.path.join(PATH, 'english_words_original.txt')
    eng_to_write_list = sorted([(k,v) for (k, v) in eng_freq_dic.items()], key=lambda x:x[1], reverse=True)#按照詞頻的高低進行倒序排列
    codecs.open(eng_filename, mode='wb', encoding='utf-8').writelines([item[0]+'\t'+str(item[1])+'\n' for item in eng_to_write_list])#詞頻為int型別,轉化為str型別以後寫入到本地檔案中

def chose_top_n():
    '''篩選出top2000,並寫入到檔案'''
    line_list = []
    filename = os.path.join(PATH, 'english_words_original.txt')
    with codecs.open(filename, encoding='utf-8') as f:
        for index,line in enumerate(f.readlines(), start=1):#enumerate(sequence, start=0)用法,顯示可迭代序列中元素及其位置,start引數可以確定起始下標,預設情況下為0
            print index, line.strip()
            time.sleep(1)
            line_list.append(line)
            if index == 2000:
                top_filename = os.path.join(PATH, 'top_2000_english_words.txt')
                codecs.open(top_filename, mode='wb', encoding='utf-8').writelines(line_list)
                break

相關推薦

語料篩選英文單詞統計詞頻切割匹配

1.正則的使用匹配2.dic.setdefault()的使用3、內建函式enumerate(sequence,start=0)的使用4、內建函式sorted(),key,reversed引數設定5、str.lower()string大小寫轉換#coding:utf-8 im

Java表示式過濾、替換將一段文字的英語單詞分別提取出統計詞頻詞頻排序。

最近在學習自然語言處理,在建立基礎標籤庫時,遇到一個需要提取語料中的英文單詞的工作,做好了現在來和大家分享下。 實現效果:讀取檔案內容,把其中的英文單詞提取出,並統計詞頻。提取時,原本不是連在一起的單詞可以分開獨立提取,例如:我的PPT和WORD,可以提取出PPT,WORD兩個單詞。 基本思

劍指offer系列——陣列重複的數字構建乘積陣列表示式匹配

陣列中重複的數字 題目描述 在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2

NSAttributedString,富文字表示式超連結水印

碼: #import "ViewController.h" #import "CustomTextAttachment.h" //NSAttributedString.h 中文字屬性key的說明 /*  NSFontAttributeName       

=讀取日誌檔案表示式匹配有用資訊並且儲存到csv檔案。

//版本1 import java.io.BufferedReader;   import java.io.BufferedWriter; import java.io.File;   import java.io.FileReader;   import java.io.

編寫一個模組含char_freq_table()函式。傳入檔名統計檔案的所有英文字元的出現次數忽略大小寫的區別根據次數的高低列印字元以及頻率到螢幕

編寫一個模組,包含char_freq_table()函式。傳入一個檔名,統計檔案中的所有 英文字元的出現次數,忽略大小寫的區別,並根據次數的高低列印字元以及頻率到 螢幕 如果有更好的思路,歡迎交流 因為時間問題就直接寫在一個檔案裡了,主要實現了統計檔案中的所出現的各個字元以及他的次數

python實現從大圖篩選小的子圖導成json檔案

簡述: 在做資料視覺化時會遇到這樣一個問題:比如說在瀏覽器渲染出一個力學關係圖,如果結點太多的話就密密麻麻,層層疊疊難以觀察,所以往往只需要渲染出關鍵的結點子圖即可,那麼有一個解決思路就是用python做資料處理篩選出子圖並導成前端需要的格式檔案,我寫的這個python檔案

從一個英文字串每個單詞出現的頻率

import java.util.*; public class Lookup{ public static void main(String[] args){ String s = "the instruction set of the Java virtual machine

C 兩個連結串列資料節點的資料域為一個字母 其中L1包含L2在L1與L2相等的字串將其逆置

前面相關操作在這呢,這個函式依託於此 //結構體 typedef struct Node { ElementType data; struct Node * next; } LNode, * LinkNode; //兩個連結串列中資料節點的資料域為一個字母 http

QT 用表示式從tableView篩選某一日期範圍內的資料

QDate date1,date2; date1=ui->dateEdit_2->date();//提取開始時間 date2=ui->dateEdit_3->date();//提取結束時間 data_filter->

python1.返回一個字串出現次數第二多的單詞 2.字串可能有英文單詞、標點、空格 3.字串英文字元全部是小寫

import re from collections import Counter def second_count_word(s): # # 利用正則按標點和空格切割,有其他標點可以新增到[]內 # lt = re.split('[ ,.:]',s) # # 利用Counter

Python資料字典處理Excel統計總數餅圖

     之前給大家分享了使用pyechats庫畫折線圖和柱狀圖,也是讀取Excel表格中資料來畫圖的,這裡我使用的是Python3;現在給大家分享使用matplotlib畫圖,也是讀取本地Excel表格中的資料來畫圖,但是這個我們採用資料字典,可以統計Excel中的資料。而

程式設計常用的英文單詞

1. category [ˈkætəgəri] n.型別,部門,種類,類別,類目;[邏,哲]範疇;體重等級 2. Expert abbr.Expanded Pert (program evaluation and reviewtechnique) 效能評價審查技術 3. v

java-打印101-200之間的素數(PrimeNumber)統計個數每5行輸出

ole enum math com math.sqrt day 輸出 package out package com.day3.one; public class PrimeNumber1 {   /**   * @param args   * 打印101-200之間

eclipse現在打包一次後後面新建的項目都出錯了出現support_v7下面出現紅線及解決方法及為什麽eclipse項目繼承ActionBarActivity解決方法一樣

style 寫博客 引用 image back 你在 發現 想法 cti 第一次寫博客,有什麽問題或者想法的希望各位可以進行評論交流,望大家多多包涵! 遇到的問題是在新建的項目都出錯了,出現support_v7下面出現紅線及解決方法及為什麽eclipse中項目繼承Acti

jqgrid 表格篩選條件的多選下拉樹形下拉 ;文本框清除插件;高級查詢多條件動態篩選插件

this break eset real 分割線 EDA color ctx 篩選條件 /** * @@desc 文本框清除按鈕,如果isAutoWrap為false當前文本框父級必須是relative定位,boostrap參考input-group

Recyclerview有多條Editext,有新增刪除item

先說一下需求:需要新增多輛車的資訊,車輛數無上限,預設顯示一個空的車輛資訊,可進行增,刪操作,刪除時又可全部刪除!先上效果圖   CompileCarActivity.class 的xml佈局 <RelativeLayout android:layout_width=

java-讀取txt檔案的第一行URL進行請求得出響應

背景:其實我是拿來練手的。想寫程式碼而已,並沒有啥特殊的目地 我的需求: 有一個url.txt檔案,裡面裝的一行一行的URL 我要請求每一行URL,然後去請求,拿到第一個請求的響應結果,程式碼很簡單,網上一搜遍地都是,我加工了一下。 整合了 直接上碼吧! p

【自然語言處理入門】01:利用jieba對資料集進行分詞統計詞頻

一、基本要求 使用jieba對垃圾簡訊資料集進行分詞,然後統計其中的單詞出現的個數,找到出現頻次最高的top100個詞。 二、完整程式碼 # -*- coding: UTF-8 -*- fr

將一個句子裡的英文單詞倒敘輸出但不改變單詞裡的字母順序

 #include <stdio.h>  #include <string.h>  #define MAX 1024 int change(char *str,int len)  {         int i = 0;