文章關鍵詞人工提取檢查

 場景:博客文章關鍵詞人工提取檢查

描述:

a.   初期關鍵詞內容已由人工提取完成。關鍵詞不含特殊字符,除英文使用的單引號、英文句號之外,不存在任何標點符號

b.   依照語言分爲中文文章、英文文章。(分別處理)

c.   所有語言關鍵詞,詞間分隔符爲空格

d.   中文關鍵詞,以漢字爲結尾,詞的開始和中間允許存在非漢字。也允許存在個別關鍵詞只有英文的情況

e.   英文關鍵詞,以英文+漢字的關鍵詞爲一個英文關鍵詞的結尾,不存在不包含漢字的英文關鍵詞

編寫要求:

a.   提供的關鍵詞樣本爲一個字符串

b.   根據描述,對關鍵詞樣本進行詞語排重操作,即重複出現的關鍵詞只保留一個樣本,其餘的刪除

c.   結果可展示可演示

d.   要求面向對象編程思想

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace test2

{

/// <summary>

/// 博客文章關鍵詞提取工具類

/// </summary>

/// 

class MyKeyWord

{

 

 

//關鍵字排重

public static string[] deleteTheSame(string keywordStr)

{

string[] temp = getKeyWords(keywordStr);

List<string> newKeyWords = new List<string>();

foreach (string str in temp)

if (newKeyWords.Contains<string>(str))

continue;

else

newKeyWords.Add(str);

return newKeyWords.ToArray<string>();

}

 

//獲取關鍵字

public static string[] getKeyWords(string keywordStr)

{

if (isEnglistWord(keywordStr))

return getEnglishKeyWords(keywordStr);

else

return getChinesKeyWords(keywordStr);

}

//判斷是否爲英文關鍵字

public static Boolean isEnglistWord(string keywordStr)

{

string[] temp = getWords(keywordStr);

foreach (string str in temp)

{

 

for (int i = 0; i < str.Length; i++)

{

byte[] byte_len = Encoding.Default.GetBytes(str.Substring(i, 1));

if (i == 0 && byte_len.Length == 2)

return false;

if (byte_len.Length == 2)

return true;

}

}

 

return false;

}

//解析單詞

public static string[] getWords(string keywordStr)

{

string[] temp = keywordStr.Split(' ');

List<string> words = new List<string>();

foreach (string tempstr in temp)

{

string str = tempstr.Trim();

if (str != null && str != "")

words.Add(str);

}

 

return words.ToArray<string>();

}

//獲取英文關鍵字

public static string[] getEnglishKeyWords(string keywordStr)

{

Console.WriteLine("該關鍵字串是英文關鍵字:");

List<string> keywords = new List<string>();

StringBuilder tempstr = new StringBuilder();

string[] temp = getWords(keywordStr);

int flag = 0;

for (int i = 0; i < temp.Length; i++)

{

//Console.WriteLine("danci:"+temp[i]);

byte[] byte_len = Encoding.Default.GetBytes(temp[i].Substring(temp[i].Length - 1, 1));

if (byte_len.Length == 2)

{

for (int j = flag; j <= i; j++)

if (tempstr.Length == 0)

tempstr.Append(temp[j]);

else

tempstr.Append(" " + temp[j]);

flag = i + 1;

keywords.Add(tempstr.ToString());

tempstr.Remove(0, tempstr.Length);

}

 

 

}

 

return keywords.ToArray<string>();

}

//獲取中文關鍵字

public static string[] getChinesKeyWords(string keywordStr)

{

Console.WriteLine("該關鍵字串是中文關鍵字:");

return getWords(keywordStr);

}

 

 

 

 

}

class Program

{

//測試程序

static void Main(string[] args)

{

string mytest = "China中國 China中國 THE UNITED STATES美國";

 

Console.WriteLine("英文關鍵字測試:");

Console.WriteLine("原關鍵字串:" + mytest);

string[] keywords = MyKeyWord.deleteTheSame(mytest);

Console.WriteLine("解析後關鍵字串:");

foreach (string temp in keywords)

Console.WriteLine(temp);

 

 

 

mytest = "China 中國 中國 THE UNITED STATES 美國";

 

Console.WriteLine("中文關鍵字測試:");

Console.WriteLine("原關鍵字串:" + mytest);

keywords = MyKeyWord.deleteTheSame(mytest);

Console.WriteLine("解析後關鍵字串:");

foreach (string temp in keywords)

Console.WriteLine(temp);

 

 

 

 

Console.ReadKey();

 

 

}

}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章