導航:首頁 > 編程語言 > doc2vecjava實現

doc2vecjava實現

發布時間:2022-01-20 02:01:02

① 如何在原有詞向量的基礎上fine-tune

最近正好組內做了一個文檔相似度的分享。決定回答一發。
首先,如果不局限於NN的方法,可以用BOW+tf-idf+LSI/LDA的體系搞定,也就是俗稱的01或one hot representation。
其次,如果樓主指定了必須用流行的NN,俗稱word-embedding的方法,當然首推word2vec(雖然不算是DNN)。然後得到了word2vec的詞向量後,可以通過簡單加權/tag加權/tf-idf加權等方式得到文檔向量。這算是一種方法。當然,加權之前一般應該先幹掉stop word,詞聚類處理一下。
還有,doc2vec中的paragraph vector也屬於直接得到doc向量的方法。特點就是修改了word2vec中的cbow和skip-gram模型。依據論文《Distributed Representations of Sentences and Documents》(ICML 2014)。
還有一種根據句法樹加權的方式,是ICML2011提出的,見論文《Parsing Natural Scenes and Natural Language with Recursive Neural Networks》,後續也有多個改編的版本
當然,得到詞向量的方式不局限於word2vec,RNNLM和glove也能得到傳說中高質量的詞向量。

② 如何通過詞向量技術來計算2個文檔的相似度

最近正好組內做了一個文檔相似度的分享。決定回答一發。
首先,如果不局限於NN的方法,可以用BOW+tf-idf+LSI/LDA的體系搞定,也就是俗稱的01或one hot representation。
其次,如果樓主指定了必須用流行的NN,俗稱word-embedding的方法,當然首推word2vec(雖然不算是DNN)。然後得到了word2vec的詞向量後,可以通過簡單加權/tag加權/tf-idf加權等方式得到文檔向量。這算是一種方法。當然,加權之前一般應該先幹掉stop word,詞聚類處理一下。
還有,doc2vec中的paragraph vector也屬於直接得到doc向量的方法。特點就是修改了word2vec中的cbow和skip-gram模型。依據論文《Distributed Representations of Sentences and Documents》(ICML 2014)。
還有一種根據句法樹加權的方式,是ICML2011提出的,見論文《Parsing Natural Scenes and Natural Language with Recursive Neural Networks》,後續也有多個改編的版本。
當然,得到詞向量的方式不局限於word2vec,RNNLM和glove也能得到傳說中高質量的詞向量。
ICML2015的論文《From Word Embeddings To Document Distances, Kusner, Washington University》新提出一種計算doc相似度的方式,大致思路是將詞之間的餘弦距離作為ground distance,詞頻作為權重,在權重的約束條件下,求WMD的線性規劃最優解。
最後,kaggle101中的一個word2vec題目的tutorial里作者如是說:他試了一下簡單加權和各種加權,不管如何處理,效果還不如01,歸其原因作者認為加權的方式丟失了最重要的句子結構信息(也可以說是詞序信息),而doc2vec的方法則保存了這種信息。
在剛剛結束的ACL2015上,似乎很多人提到了glove的方法,其思想是挖掘詞共現信息的內在含義,據說是基於全局統計的方法(LSI為代表)與基於局部預測的方法(word2vec為代表)的折衷,而且輸出的詞向量在詞聚類任務上幹掉了word2vec的結果,也可以看看。《GloVe: Global Vectors forWord Representation》

③ 如何用 word2vec 計算兩個句子之間的相似度

word2vec這個代名詞也好計算軟體也好,對於一個不太懂軟體的人來說真的是很陌生,也可以說是一竅不通,但是從朋友那了解了很多,所以我覺得計算兩個句子之間的相似度我覺得定義句子相似度是這個問題的關鍵。


我覺得文檔相似度取決於文檔的長度,如果是一個簡短的文本,傳統方法tf-idf,相反如果是長文本,可以使用word2vec。

④ 如何通過詞向量技術來計算2個文檔的相似度

最近正好組內做了一個文檔相似度的分享。決定回答一發。 首先,如果不局限於NN的方法,可以用BOW+tf-idf+LSI/LDA的體系搞定,也就是俗稱的01或one hot representation。 其次,如果樓主指定了必須用流行的NN,俗稱word-embedding的方法,當然首推word2vec(雖然不算是DNN)。然後得到了word2vec的詞向量後,可以通過簡單加權/tag加權/tf-idf加權等方式得到文檔向量。這算是一種方法。當然,加權之前一般應該先幹掉stop word,詞聚類處理一下。 還有,doc2vec中的paragraph vector也屬於直接得到doc向量的方法。特點就是修改了word2vec中的cbow和skip-gram模型。依據論文《Distributed Representations of Sentences and Documents》(ICML 2014)。 還有一種根據句法樹加權的方式,是ICML2011提出的,見論文《Parsing Natural Scenes and Natural Language with Recursive Neural Networks》,後續也有多個改編的版本。 當然,得到詞向量的方式不局限於word2vec,RNNLM和glove也能得到傳說中高質量的詞向量。 ICML2015的論文《From Word Embeddings To Document Distances, Kusner, Washington University》新提出一種計算doc相似度的方式,大致思路是將詞之間的餘弦距離作為ground distance,詞頻作為權重,在權重的約束條件下,求WMD的線性規劃最優解。 最後,kaggle101中的一個word2vec題目的tutorial里作者如是說:他試了一下簡單加權和各種加權,不管如何處理,效果還不如01,歸其原因作者認為加權的方式丟失了最重要的句子結構信息(也可以說是詞序信息),而doc2vec的方法則保存了這種信息。 在剛剛結束的ACL2015上,似乎很多人提到了glove的方法,其思想是挖掘詞共現信息的內在含義,據說是基於全局統計的方法(LSI為代表)與基於局部預測的方法(word2vec為代表)的折衷,而且輸出的詞向量在詞聚類任務上幹掉了word2vec的結果,也可以看看。《GloVe: Global Vectors forWord Representation》

⑤ Word2vec的詞聚類結果與LDA的主題詞聚類結果,有什麼不同

所以Word2vec的一些比較精細的應用,LDA是做不了的。比如:
1)計算詞的相似度。同樣在電子產品這個主題下,「蘋果」是更接近於「三星」還是「小米」?
2)詞的類比關系:vector(小米)- vector(蘋果)+ vector(喬布斯)近似於 vector(雷軍)。
3)計算文章的相似度。這個LDA也能做但是效果不好。而用詞向量,即使在文章topic接近的情況下,計算出的相似度也能體現相同、相似、相關的區別。
反過來說,想用詞向量的聚類去得到topic這一級別的信息也是很難的。很有可能,「蘋果」和「小米」被聚到了一類,而「喬布斯」和「雷軍」則聚到另一類。
這種差別,本質上說是因為Word2vec利用的是詞與上下文的共現,而LDA利用的是詞與文章之間的共現。
PS. 說起來,拿LDA和doc2vec比較才比較合理啊~~

⑥ doc2vec 跑出的結果怎麼聚類

K-means或者別的聚類演算法啊(就是效果感覺不太好 哎!)

java編一個計算器的代碼

用Applet還是用Application?

我以前老師好像也布置過一個計算器是Applet的

import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

//import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

public class calculator extends Applet implements ActionListener {

/**
*
*/
//private static final long serialVersionUID = 3114597813287650283L;
/* (non-Javadoc)
* @see java.applet.Applet#init()
*/
public int operator = 1; //運算符判斷:1-加,2-減,3-乘,4-除;
public double accumulator=0; //運算的累加器;
public double digit = 0;
public boolean bool = true;
public boolean boolca = false;
public String text="0.0";

/*窗體控制項*/
public JTextField tf_AccepteData = new JTextField();
public Button bt_Digit;
public Button bt_dot = new Button(".");
public Button bt_add = new Button("+");
public Button bt_plus = new Button("-");
public Button bt_mul = new Button("*");
public Button bt_div = new Button("/");
public Button bt_equal = new Button("=");
public Button bt_clear = new Button("C");
public Button bt_inverse = new Button("1/x");
public Button bt_non = new Button("+/-");
public Button bt_sqrt = new Button("sqrt");

public double scan()
{
text = tf_AccepteData.getText();
try{
digit = Double.parseDouble(text);
}catch(Exception msg){
msg.printStackTrace();
}
return digit;
}
public void accumulate()
{
if(!tf_AccepteData.getText().equals("")){
switch(operator){
case 1:
accumulator += digit;
tf_AccepteData.setText("" + accumulator);
break;
case 2:
accumulator -= digit;
tf_AccepteData.setText("" + accumulator);
break;
case 3:
accumulator *= digit;
tf_AccepteData.setText("" + accumulator);
break;
case 4:
if(digit == 0){
tf_AccepteData.setText("除數不能為零");
operator = 1;
accumulator = 0;
bool = true;
digit = 0;
text="";
}else{
accumulator /=digit;
tf_AccepteData.setText("" + accumulator);
}
break;
default:
break;
}
operator = 1;
}
}

public void init() {
/*初始化窗體*/
setLayout(null);
setSize(225,200);
setBackground(Color.orange);
add(tf_AccepteData);
tf_AccepteData.setHorizontalAlignment(SwingConstants.RIGHT);
tf_AccepteData.setSize(200, 25);
tf_AccepteData.setLocation(10, 10);
tf_AccepteData.setEnabled(false);
tf_AccepteData.setText("0.0");
text = tf_AccepteData.getText();
for(int i= 0; i<=9; i++){
bt_Digit = new Button("" + i);
add(bt_Digit);
bt_Digit.setSize(30, 30);
if(i>=7&&i<=9)
bt_Digit.setLocation((15+40*(i-7)), 50);
if(i>=4&&i<=6)
bt_Digit.setLocation((15+40*(i-4)), 85);
if(i>=1&&i<=3)
bt_Digit.setLocation((15+40*(i-1)), 120);
if(i==0)
bt_Digit.setLocation(15, 155);
bt_Digit.addActionListener(this);
}
/*
* 小數點
*/
add(bt_dot);
bt_dot.setSize(30, 30);
bt_dot.setLocation(95, 155);
bt_dot.addActionListener(this/*new ActionListener()*/);/*{
public void actionPerformed(ActionEvent e) {
}
});*/
/*
* 加法運算
*/
add(bt_add);
bt_add.setSize(30, 30);
bt_add.setLocation(135, 155);
bt_add.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {

accumulate();
operator = 1;
bool =true;
boolca = true;
digit = 0;
}
});
/*
* 減法運算
*/
add(bt_plus);
bt_plus.setSize(30, 30);
bt_plus.setLocation(135, 120);
bt_plus.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
accumulate();
operator = 2;
bool =true;
boolca = true;
digit = 0;
}
});
/*
* 乘法運算
*/
add(bt_mul);
bt_mul.setSize(30, 30);
bt_mul.setLocation(135, 85);
bt_mul.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
accumulate();
operator = 3;
bool =true;
boolca = true;
digit = 1;
}
});
/*
* 除法運算
*/
add(bt_div);
bt_div.setSize(30, 30);
bt_div.setLocation(135, 50);
bt_div.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
accumulate();
operator = 4;
bool =true;
boolca = true;
digit = 1;
}
});
/*
* 倒數
*/
add(bt_inverse);
bt_inverse.setSize(30, 30);
bt_inverse.setLocation(175, 120);
bt_inverse.addActionListener(new ActionListener(){
double data=0;
public void actionPerformed(ActionEvent e) {
data = scan();
if(digit==0){
tf_AccepteData.setText("取倒分母不能為零!");
operator = 1;
accumulator = 0;
bool = true;
digit = 0;
text="";
}else{
tf_AccepteData.setText("" + 1.0/data);
}
if(!boolca)
operator = 1;
}
});
/*
* 數學平方根
*/
add(bt_sqrt);
bt_sqrt.setSize(30, 30);
bt_sqrt.setLocation(175, 85);
bt_sqrt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
scan();
if(digit<0){
tf_AccepteData.setText("函數輸入無效!");
operator = 1;
accumulator = 0;
bool = true;
digit = 0;
text="";
}else{
digit = Math.sqrt(digit);
tf_AccepteData.setText("" + digit);
}
if(!boolca)
operator = 1;
}
});
/*
* 取反
*/
add(bt_non);
bt_non.setSize(30, 30);
bt_non.setLocation(55, 155);
bt_non.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
try{
digit = -Double.parseDouble(tf_AccepteData.getText());
tf_AccepteData.setText("" + digit);
}catch(Exception msg){
msg.printStackTrace();
}
if(!boolca)
operator = 1;
}
});
/*
* 等於
*/
add(bt_equal);
bt_equal.setSize(30, 30);
bt_equal.setLocation(175, 155);
bt_equal.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
accumulate();
operator = 1;
bool =true;
digit = 0;
}
});
/*
* 清零運算
*/
add(bt_clear);
bt_clear.setSize(30, 30);
bt_clear.setLocation(175, 50);
bt_clear.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
operator = 1;
accumulator = 0;
bool = true;
digit = 0;
text="";
tf_AccepteData.setText("0.0");
}
});
}
public void actionPerformed(ActionEvent e){
if(bool){
tf_AccepteData.setText("");
bool = false;
}
text = tf_AccepteData.getText();
if((text+e.getActionCommand()).indexOf(".")!=(text+e.getActionCommand()).lastIndexOf(".")) return;
text += e.getActionCommand();
if(text.equals("."))
text = "0"+text;
tf_AccepteData.setText(text);
scan();
}
}

還要寫一個CalculatorTest.html網頁文件代碼如下,寫好雙擊運行CalculatorTest.html就可以了

<!-------------------------CalculatorTest.html ------------------------>

<HTML>
<HEAD>
<TITLE>
小應用程序——一個簡單的計算器模型
</TITLE>
</HEAD>

<BODY bgcolor = blue text = yellow >
<center>
<marquee behavior=alternate width = 300 height = 40><br>實現加、減、乘、除四種基本運算</marquee>
<br><br><br>
<APPLET ALIGN = middle CODE = "calculator.class" WIDTH = 225 HEIGHT = 200></APPLET>
<br><br><br>
<input type = button value = " 退出 " onClick="javascript:window.close()">
</center>
<BR>
</BODY>
</HTML>

⑧ Doc2vec的優缺點是什麼

優點很多比如

⑨ wordtune怎麼用

wordtune:word可以插入圖片,但是插入的gif是只能顯示一幀。

doc2vec中的paragraph vector也屬於直接得到doc向量的方法。特點就是修改了word2vec中的cbow和skip-gram模型。依據論文《Distributed Representations of Sentences and Documents》(ICML 2014)。

Microsoft office Word 2007:

這次發行包含了許多變化,包括新的支持XML的文件格式,重新設計的界面,集成的公式編輯器和書目管理。此外,提出了XML數據包,經過對象模型和文件格式可以得到的,稱作自定義的XML——這可以利用在同一個新的被稱作連接控制工具結構文檔的特性的關聯之中。

它也有隻針對帶有焦點的對象有特殊功能的內容標簽,還有一些其他特性如Live Preview(通過它你可以在不作出任何永久變化時查看文件)、迷你工具欄,超級工具提示,快速訪問工具欄SmartArt等。

⑩ 請問一個java中Vector類的問題

Vector<Token> vector=new Vector<Token>();

Token token1 = new Token();
Token token2 = new Token();

vector.add(token1);
vector.add(token2);

這樣子嘗試一下吧

取出的話

如果像上面那樣的話

Token a = vector.get(0);
Token b = vector.get(1);

就可以了

閱讀全文

與doc2vecjava實現相關的資料

熱點內容
外語電影翻譯成普通話的網站 瀏覽:381
別克怎麼用原廠電腦編程 瀏覽:125
半月談app是什麼意思 瀏覽:788
廣州正大數據恢復 瀏覽:80
什麼app軟體上買汽車減震器 瀏覽:375
在線免費的網站你懂得 瀏覽:611
linux服務加入開機啟動 瀏覽:115
手機百度app如何上傳文件 瀏覽:672
韓劇電影版 瀏覽:887
瀟湘書院sp 瀏覽:324
林正英下載 瀏覽:511
帶著智能手機闖盪異世界 小說 瀏覽:901
男同情愛電影 瀏覽:913
vb監控文件夾 瀏覽:850
台灣丈夫電影 瀏覽:660
戴爾筆記本為什麼連不上無線網路 瀏覽:582
台灣的電影電視劇都用什麼網站 瀏覽:238
米思齊編程土壤濕度感測器怎麼用 瀏覽:208
大寸度愛情電影 瀏覽:213
2015年全球大數據總量 瀏覽:63

友情鏈接