導航:首頁 > 編程語言 > java文本聚類

java文本聚類

發布時間:2023-01-22 03:52:00

A. java內存溢出主要有哪些類型

主要有三種類型
第一種OutOfMemoryError: PermGen space
發生這種問題的原意是程序中使用了大量的jar或class,使java虛擬機裝載類的空間不夠,與Permanent Generation space有關。解決這類問題有以下兩種辦法:
1. 增加java虛擬機中的XX:PermSize和XX:MaxPermSize參數的大小,其中XX:PermSize是初始永久保存區域大小,XX:MaxPermSize是最大永久保存區域大小。如針對tomcat6.0,在catalina.sh 或catalina.bat文件中一系列環境變數名說明結束處(大約在70行左右) 增加一行:
JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m"
如果是windows伺服器還可以在系統環境變數中設置。感覺用tomcat發布sprint+struts+hibernate架構的程序時很容易發生這種內存溢出錯誤。使用上述方法,我成功解決了部署ssh項目的tomcat伺服器經常宕機的問題。
2. 清理應用程序中web-inf/lib下的jar,如果tomcat部署了多個應用,很多應用都使用了相同的jar,可以將共同的jar移到tomcat共同的lib下,減少類的重復載入。

第二種OutOfMemoryError: Java heap space
發生這種問題的原因是java虛擬機創建的對象太多,在進行垃圾回收之間,虛擬機分配的到堆內存空間已經用滿了,與Heap space有關。解決這類問題有兩種思路:
1. 檢查程序,看是否有死循環或不必要地重復創建大量對象。找到原因後,修改程序和演算法
我以前寫一個使用K-Means文本聚類演算法對幾萬條文本記錄(每條記錄的特徵向量大約10來個)進行文本聚類時,由於程序細節上有問題,就導致了Java heap space的內存溢出問題,後來通過修改程序得到了解決。
2. 增加Java虛擬機中Xms(初始堆大小)和Xmx(最大堆大小)參數的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m

第三種OutOfMemoryError:unable to create new native thread
這種錯誤在Java線程個數很多的情況下容易發生

B. java中_類可以用來建立多行文本區

javax.swing
類 JTextArea
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.text.JTextComponent
javax.swing.JTextArea

所有已實現的介面:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable
public class JTextArea

extends JTextComponent
JTextArea 是一個顯示純文本的多行區域。它作為一個輕量級組件,提供與 java.awt.TextArea 類的源兼容性,理應如此。有關使用所有文本組件的信息和示例,請參閱 The Java Tutorial 中 Using Text Components 一節。
此組件具有 java.awt.TextArea 類中沒有的功能。有關其他功能,請參考超類。還有 JTextPane 和 JEditorPane 也是具有更多功能的多行文本類。
java.awt.TextArea 在內部處理滾動。JTextArea 的不同之處在於,它不管理滾動,但實現了 swing Scrollable 介面。這允許把它放置在 JScrollPane 的內部(如果需要滾動行為),或者直接使用(如果不需要滾動)。
java.awt.TextArea 具有換行能力。這由水平滾動策略來控制。由於滾動不是由 JTextArea 直接完成的,因此必須通過另一種方式來提供向後兼容性。JTextArea 具有用於換行的綁定 (bound) 屬性,該屬性控制其是否換行。在默認情況下,換行屬性設置為 false(不換行)。
java.awt.TextArea 具有兩個屬性 rows 和 columns,這兩個屬性用來確定首選大小。JTextArea 用這些屬性來指示 viewport 的首選大小,此 viewport 被放置到 JScrollPane 中以匹配由 java.awt.TextArea 提供的功能。JTextArea 具有顯示所有文本所需的首選大小,以便在 JScrollPane 內部正常工作。如果 rows 或 columns 的值等於 0,則沿該軸的首選大小將用於沿相同軸上 viewport 的首選大小。
可以通過添加一個 TextEvent 的 TextListener 來對 java.awt.TextArea 的更改進行監視。在基於 JTextComponent 的組件中,更改通過 DocumentEvent 從模型傳播到 DocumentListeners。DocumentEvent 給出了更改的位置和更改種類(如果需要)。代碼片段如下所示:
DocumentListener myListener = ??;
JTextArea myArea = ??;
myArea.getDocument().addDocumentListener(myListener);

C. DBSCAN演算法的Java實現

DBSCAN是一種基於密度的聚類演算法 它的基本原理就是給定兩個參數 ξ和minp 其中 ξ可以理解為半徑 演算法將在這個半徑內查找樣本 minp是一個以ξ為半徑查找到的樣本個數n的限制條件 只要n>=minp 查找到的樣本點就是核心樣本點 演算法的具體描述見參考文件 下邊是這個演算法的java實現

首先定義一個Point類 代表樣本點

<! [endif] >

package sunzhenxing;

public class Point {

private int x;

private int y;

private boolean isKey;

private boolean isClassed;

public boolean isKey() {

return isKey;

}

public void setKey(boolean isKey) {

this isKey = isKey;

this isClassed=true;

}

public boolean isClassed() {

return isClassed;

}

public void setClassed(boolean isClassed) {

this isClassed = isClassed;

}

public int getX() {

return x;

}

public void setX(int x) {

this x = x;

}

public int getY() {

return y;

}

public void setY(int y) {

this y = y;

}

public Point(){

x= ;

y= ;

}

public Point(int x int y){

this x=x;

this y=y;

}

public Point(String str){

String[] p=str split( );

this x=Integer parseInt(p[ ]);

this y=Integer parseInt(p[ ]);

}

public String print(){

return < +this x+ +this y+ > ;

}

}

然後定義一個工具類 為演算法的實現服務

package sunzhenxing;

import java io BufferedReader;

import java io FileReader;

import java io IOException;

import java util *;

public class Utility {

/**

* 測試兩個點之間的距離

* @param p 點

* @param q 點

* @return 返回兩個點之間的距離

*/

public static double getDistance(Point p Point q){

int dx=p getX() q getX();

int dy=p getY() q getY();

double distance=Math sqrt(dx*dx+dy*dy);

return distance;

}

/**

* 檢查給定點是不是核心點

* @param lst 存放點的鏈表

* @param p 待測試的點

* @param e e半徑

* @param minp 密度閾值

* @return 暫時存放訪問過的點

*/

public static List<Point> isKeyPoint(List<Point> lst Point p int e int minp){

int count= ;

List<Point> tmpLst=new ArrayList<Point>();

for(Iterator<Point> it=erator();it hasNext();){

Point q=it next();

if(getDistance(p q)<=e){

++count;

if(!ntains(q)){

tmpLst add(q);

}

}

}

if(count>=minp){

p setKey(true);

return tmpLst;

}

return null;

}

public static void setListClassed(List<Point> lst){

for(Iterator<Point> it=erator();it hasNext();){

Point p=it next();

if(!p isClassed()){

p setClassed(true);

}

}

}

/**

* 如果b中含有a中包含的元素 則把兩個集合合並

* @param a

* @param b

* @return a

*/

public static boolean mergeList(List<Point> a List<Point> b){

boolean merge=false;

for(int index= ;index<b size();++index){

if(ntains(b get(index))){

merge=true;

break;

}

}

if(merge){

for(int index= ;index<b size();++index){

if(!ntains(b get(index))){

a add(b get(index));

}

}

}

return merge;

}

/**

* 返迴文本中的點集合

* @return 返迴文本中點的集合

* @throws IOException

*/

public static List<Point> getPointsList() throws IOException{

List<Point> lst=new ArrayList<Point>();

String txtPath= src\\sunzhenxing\points txt ;

BufferedReader br=new BufferedReader(new FileReader(txtPath));

String str= ;

while((str=br readLine())!=null && str!= ){

lst add(new Point(str));

}

br close();

return lst;

}

}

最後在主程序中實現演算法 如下所示

package sunzhenxing;

import java io *;

import java util *;

public class Dbscan {

private static List<Point> pointsList=new ArrayList<Point>();//存儲所有點的集合

private static List<List<Point>> resultList=new ArrayList<List<Point>>();//存儲DBSCAN演算法返回的結果集

private static int e= ;//e半徑

private static int minp= ;//密度閾值

/**

* 提取文本中的的所有點並存儲在pointsList中

* @throws IOException

*/

private static void display(){

int index= ;

for(Iterator<List<Point>> it=erator();it hasNext();){

List<Point> lst=it next();

if(lst isEmpty()){

continue;

}

System out println( 第 +index+ 個聚類 );

for(Iterator<Point> it =erator();it hasNext();){

Point p=it next();

System out println(p print());

}

index++;

}

}

//找出所有可以直達的聚類

private static void applyDbscan(){

try {

pointsList=Utility getPointsList();

for(Iterator<Point> it=erator();it hasNext();){

Point p=it next();

if(!p isClassed()){

List<Point> tmpLst=new ArrayList<Point>();

if((tmpLst=Utility isKeyPoint(pointsList p e minp)) != null){

//為所有聚類完畢的點做標示

Utility setListClassed(tmpLst);

resultList add(tmpLst);

}

}

}

} catch (IOException e) {

// TODO Auto generated catch block

e printStackTrace();

}

}

//對所有可以直達的聚類進行合並 即找出間接可達的點並進行合並

private static List<List<Point>> getResult(){

applyDbscan();//找到所有直達的聚類

int length=resultList size();

for(int i= ;i<length;++i){

for(int j=i+ ;j<length;++j){

if(rgeList(resultList get(i) resultList get(j))){

resultList get(j) clear();

}

}

}

return resultList;

}

/**

* 程序主函數

* @param args

*/

public static void main(String[] args) {

getResult();

display();

//System out println(Utility getDistance(new Point( ) new Point( )));

}

}

下邊是一個小測試 即使用src\\sunzhenxing\points txt文件的內容進行測試 points txt的文件內容是

最後演算法的結果是

第 個聚類

< >

< >

< >

< >

< >

< >

< >

< >

< >

< >

< >

第 個聚類

< >

< >

< >

< >

< >

< >

< >

lishixin/Article/program/Java/hx/201311/26957

D. 有誰能介紹一下Fudannlp

FudanNLP主要是為中文自然語言處理而開發的工具包,也包含為實現這些任務的機器學習演算法和數據集。本工具包及其包含數據集使用LGPL3.0許可證。開發語言為Java。主要功能有:1. 文本分類 新聞聚類;2. 中文分詞 詞性標注 實體名識別 關鍵詞抽取 依存句法分析 時間短語識別;3. 結構化學習 在線學習 層次分類 聚類 精確推理。希望能幫到你,謝謝!

E. java中的文本分析

BufferedReader br = new BufferedReader(new FileReader(要找的文件路徑));
StringBuffer sb = br.readLine();
Pattern pattern = pattern.compile("(//d{3})(//d{3})(//d{1})(//d{10})");
Matcher m = pattern.matcher(sb);
while(m.find()) {
System.out.println(m.group());
}

可能不是您要的解決方法。不過大多數查找數據都是這個思路。

F. k-means聚類演算法的java代碼實現文本聚類

K-MEANS演算法:
k-means 演算法接受輸入量 k ;然後將n個數據對象劃分為 k個聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個「中心對象」(引力中心)來進行計算的。

k-means 演算法的工作過程說明如下:首先從n個數據對象任意選擇 k 個對象作為初始聚類中心;而對於所剩下其它對象,則根據它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然後再計算每個所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重復這一過程直到標准測度函數開始收斂為止。一般都採用均方差作為標准測度函數. k個聚類具有以下特點:各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。

具體如下:
輸入:k, data[n];
(1) 選擇k個初始中心點,例如c[0]=data[0],…c[k-1]=data[k-1];
(2) 對於data[0]….data[n], 分別與c[0]…c[n-1]比較,假定與c[i]差值最少,就標記為i;
(3) 對於所有標記為i點,重新計算c[i]=/標記為i的個數;
(4) 重復(2)(3),直到所有c[i]值的變化小於給定閾值。

演算法實現起來應該很容易,就不幫你編寫代碼了。

G. 利用CURE演算法進行文本聚類的java實現代碼

為什麼不用kmeans呢。

by 矩網智慧

H. java對lucene查詢結果進行聚類~~

hadoop 你自己寫聚類的演算法

I. java 讀文本文件的常用類和方法有哪些

File類是直接繼承Object類的。Object類的方法我就不不寫了:
欄位摘要
static String pathSeparator
與系統有關的路徑分隔符,為了方便,它被表示為一個字元串。
static char pathSeparatorChar
與系統有關的路徑分隔符。
static String separator
與系統有關的默認名稱分隔符,為了方便,它被表示為一個字元串。
static char separatorChar
與系統有關的默認名稱分隔符。
構造方法摘要
File(File parent, String child)
根據 parent 抽象路徑名和 child 路徑名字元串創建一個新 File 實例。
File(String pathname)
通過將給定路徑名字元串轉換為抽象路徑名來創建一個新 File 實例。
File(String parent, String child)
根據 parent 路徑名字元串和 child 路徑名字元串創建一個新 File 實例。
File(URI uri)
通過將給定的 file: URI 轉換為一個抽象路徑名來創建一個新的 File 實例。
方法摘要
boolean canExecute()
測試應用程序是否可以執行此抽象路徑名表示的文件。
boolean canRead()
測試應用程序是否可以讀取此抽象路徑名表示的文件。
boolean canWrite()
測試應用程序是否可以修改此抽象路徑名表示的文件。
int compareTo(File pathname)
按字母順序比較兩個抽象路徑名。
boolean createNewFile()
當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創建一個新的空文件。
static File createTempFile(String prefix, String suffix)
在默認臨時文件目錄中創建一個空文件,使用給定前綴和後綴生成其名稱。
static File createTempFile(String prefix, String suffix, File directory)
在指定目錄中創建一個新的空文件,使用給定的前綴和後綴字元串生成其名稱。
boolean delete()
刪除此抽象路徑名表示的文件或目錄。
void deleteOnExit()
在虛擬機終止時,請求刪除此抽象路徑名表示的文件或目錄。
boolean equals(Object obj)
測試此抽象路徑名與給定對象是否相等。
boolean exists()
測試此抽象路徑名表示的文件或目錄是否存在。
File getAbsoluteFile()
返回此抽象路徑名的絕對路徑名形式。
String getAbsolutePath()
返回此抽象路徑名的絕對路徑名字元串。
File getCanonicalFile()
返回此抽象路徑名的規范形式。
String getCanonicalPath()
返回此抽象路徑名的規范路徑名字元串。
long getFreeSpace()
返回此抽象路徑名指定的分區中未分配的位元組數。
String getName()
返回由此抽象路徑名表示的文件或目錄的名稱。
String getParent()
返回此抽象路徑名父目錄的路徑名字元串;如果此路徑名沒有指定父目錄,則返回 null。
File getParentFile()
返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。
String getPath()
將此抽象路徑名轉換為一個路徑名字元串。
long getTotalSpace()
返回此抽象路徑名指定的分區大小。
long getUsableSpace()
返回此抽象路徑名指定的分區上可用於此虛擬機的位元組數。
int hashCode()
計算此抽象路徑名的哈希碼。
boolean isAbsolute()
測試此抽象路徑名是否為絕對路徑名。
boolean isDirectory()
測試此抽象路徑名表示的文件是否是一個目錄。
boolean isFile()
測試此抽象路徑名表示的文件是否是一個標准文件。
boolean isHidden()
測試此抽象路徑名指定的文件是否是一個隱藏文件。
long lastModified()
返回此抽象路徑名表示的文件最後一次被修改的時間。
long length()
返回由此抽象路徑名表示的文件的長度。
String[] list()
返回一個字元串數組,這些字元串指定此抽象路徑名表示的目錄中的文件和目錄。
String[] list(FilenameFilter filter)
返回一個字元串數組,這些字元串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
File[] listFiles()
返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。
File[] listFiles(FileFilter filter)
返回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
File[] listFiles(FilenameFilter filter)
返回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
static File[] listRoots()
列出可用的文件系統根。
boolean mkdir()
創建此抽象路徑名指定的目錄。
boolean mkdirs()
創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。
boolean renameTo(File dest)
重新命名此抽象路徑名表示的文件。
boolean setExecutable(boolean executable)
設置此抽象路徑名所有者執行許可權的一個便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly)
設置此抽象路徑名的所有者或所有用戶的執行許可權。
boolean setLastModified(long time)
設置此抽象路徑名指定的文件或目錄的最後一次修改時間。
boolean setReadable(boolean readable)
設置此抽象路徑名所有者讀許可權的一個便捷方法。
boolean setReadable(boolean readable, boolean ownerOnly)
設置此抽象路徑名的所有者或所有用戶的讀許可權。
boolean setReadOnly()
標記此抽象路徑名指定的文件或目錄,從而只能對其進行讀操作。
boolean setWritable(boolean writable)
設置此抽象路徑名所有者寫許可權的一個便捷方法。
boolean setWritable(boolean writable, boolean ownerOnly)
設置此抽象路徑名的所有者或所有用戶的寫許可權。
String toString()
返回此抽象路徑名的路徑名字元串。
URI toURI()
構造一個表示此抽象路徑名的 file: URI。
URL toURL()
已過時。 此方法不會自動轉義 URL 中的非法字元。建議新的代碼使用以下方式將抽象路徑名轉換為 URL:首先通過 toURI 方法將其轉換為 URI,然後通過 URI.toURL 方法將 URI 裝換為 URL。

J. java outofmemory

java outofmemory是什麼,讓我們一起了解一下?

out of memory(內存溢出)是一個程序員常見的錯誤類型,通常是開啟應用程序過多所導致。一般是由於電腦內存不足,配置過低,電腦開啟的應用程序過多,導致內存不足或者游戲客戶端的問題。

Java中OutOfMemoryError(內存溢出)出現的情況和解決辦法是什麼?

第一種OutOfMemoryError: PermGenspace。
發生這種問題的原意是程序中使用了大量的jar或class,使java虛擬機裝載類的空間不夠,與PermanentGeneration space有關。解決這類問題有以下兩種辦法: 
1、增加java虛擬機中的XX:PermSize和XX:MaxPermSize參數的大小,其中XX:PermSize是初始永久保存區域大小,XX:MaxPermSize是最大永久保存區域大小。如針對tomcat6.0,在catalina.sh或catalina.bat文件中一系列環境變數名說明結束處(大約在70行左右) 增加一行: 
JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m" 。
如果是windows伺服器還可以在系統環境變數中設置。感覺用tomcat發布sprint+struts+hibernate架構的程序時很容易發生這種內存溢出錯誤。
2、清理應用程序中web-inf/lib下的jar,如果tomcat部署了多個應用,很多應用都使用了相同的jar,可以將共同的jar移到tomcat共同的lib下,減少類的重復載入。這種方法是網上部分人推薦的,我沒試過,但感覺減少不了太大的空間,最靠譜的還是第一種方法。 

第二種OutOfMemoryError: Java heap space 。
發生這種問題的原因是java虛擬機創建的對象太多,在進行垃圾回收之間,虛擬機分配的到堆內存空間已經用滿了,與Heapspace有關。解決這類問題有兩種思路: 
1、檢查程序,看是否有死循環或不必要地重復創建大量對象。找到原因後,修改程序和演算法。 
寫一個使用K-Means文本聚類演算法對幾萬條文本記錄(每條記錄的特徵向量大約10來個)進行文本聚類時,由於程序細節上有問題,就導致了Javaheap space的內存溢出問題,後來通過修改程序得到了解決。 
2、增加Java虛擬機中Xms(初始堆大小)和Xmx(最大堆大小)參數的大小。如:set JAVA_OPTS= -Xms256m-Xmx1024m。

實戰操作,本機內存溢出代碼如下: package DirectMemory; import sun.misc.Unsafe; import java.lang.reflect.Field; /**  * VM Args: -Xmx20M -XX:MaxDirectMemorySize=10M  * DirectByteBuffer分配內存也會拋出內存溢出異常,但它拋出異常時沒有真正向系統申請分配內存,而是通過計算得知內存  * 無法分配,於是手動拋出異常。有點類似操作系統的銀行家演算法(避免死鎖)  */ public class DirectMemoryOOM {     private static final int _1MB = 1024*1024;     public static void main(String[] args) throws IllegalAccessException {         Field unsafeField = Unsafe.class.getDeclaredFields()[0];        //獲取類中第一個變數         unsafeField.setAccessible(true);                               //設置是否可反射訪問private變數         Unsafe unsafe = (Unsafe) unsafeField.get(null);             //獲取靜態對象         while (true){             unsafe.allocateMemory(_1MB);                            //申請分配內存         }     } }

閱讀全文

與java文本聚類相關的資料

熱點內容
javatomcat圖片 瀏覽:415
程序員生產智能創意 瀏覽:65
匯和銀行app怎麼登錄 瀏覽:381
騰訊伺服器如何上傳源碼 瀏覽:739
單片機的原理概述 瀏覽:508
火控pdf 瀏覽:267
如何復制雲伺服器centos環境 瀏覽:984
債權pdf 瀏覽:301
紅色番字的app怎麼下載 瀏覽:876
雲伺服器流程教課 瀏覽:702
中國農業銀行app怎麼沒有網 瀏覽:997
幾率表演算法 瀏覽:902
程序員理工科 瀏覽:708
企業郵箱登錄收件伺服器地址 瀏覽:558
計算機思維與演算法設計的重要性 瀏覽:664
linux刷新磁碟命令 瀏覽:76
我的世界如何查看伺服器種子pc 瀏覽:284
linuxlamp編譯安裝 瀏覽:609
枚舉演算法ppt 瀏覽:184
cmd查看進程命令 瀏覽:956