上下文是:我已经有了一些单词(实际上是短语),这些单词是由应用于互联网搜索查询的kmeans产生的,并且在搜索引擎的结果中使用常见的URL作为距离(如果我简化很多,则会同时显示网址而不是单词) ).
我想使用语义自动标记聚类,换句话说,我想提取围绕一起考虑的一组短语的主要概念.
例如 - 抱歉我的例子 - 如果我有以下一堆问题:['我丈夫袭击了我','他被警察逮捕','审判仍在继续','我的丈夫可以因为骚扰我而入狱?','自由律师']我的研究涉及家庭暴力,但显然这个集群专注于问题的法律方面,所以标签可能是"合法的".
我是NPL的新手,但我必须确切地说我不想使用POS标记提取单词(或者至少这不是预期的最终结果,但可能是必要的初步步骤).
我读到Wordnet的感觉消除歧义,我认为这可能是一个很好的轨道,但我不想计算两个查询之间的相似性(因为集群是输入),也不需要获得一个选定单词的定义,这要归功于提供的上下文通过一大堆词(在这种情况下选择哪个词?).我想使用整个单词来提供上下文(可能使用synset或使用wordnet的xml结构进行分类),然后用一个或几个单词汇总上下文.
有任何想法吗 ?我可以使用R或python,我读了一些关于nltk但我找不到在我的上下文中使用它的方法.
我尝试从github下载tsdyn包(它还没有更新)但我的代理阻止我连接到github.
library(devtools)
install_github("MatthieuStigler/tsDyn", ref="Dev94", subdir="tsDyn")
Downloading github repo MatthieuStigler/tsDyn@Dev94
Erreur dans function (type, msg, asError = TRUE) :
Failed to connect to api.github.com port 443: Connection refused
Run Code Online (Sandbox Code Playgroud)
然后我下载了.zip并尝试从.zip安装包并出现此错误:
Erreur dans read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) :
impossible d'ouvrir la connexion
De plus : Message d'avis :
In read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) :
impossible d'ouvrir le fichier compressé 'tsDyn-master/DESCRIPTION', cause probable : 'No such file or directory'
Run Code Online (Sandbox Code Playgroud)
我不明白,因为我可以在存储库中找到DESCRIPTION文件.我认为它正试图连接到互联网,这是我的专业联系所不允许的.我发现有些Linux用户成功下载了另一个端口而不是443(我认为端口8000必须允许但不确定)但是我有Windows 7.我有管理员凭据,当我尝试时它也不起作用使用R作为管理员.我真的对代理配置一无所知,所以如果你有任何想法,请尝试更具体地说明我应该采取的行动.
非常感谢提前!
Edit1:我尝试了你的提议,并删除了文件存储库中不必要的级别,我做了一个
Rscript -e "install.packages ('C:/Users/stephanie/Downloads/tsDyn.zip',repos=NULL) "
Run Code Online (Sandbox Code Playgroud)
我从终端"将软件包安装到'C:/Users/stephanie/Documents/R/win-library/3.1'(因为'lib'未指定).它似乎工作,但当我使用命令库(tsDyn)时)在RI得到了"Erreur dans library(tsDyn),'tsDyn'n'est pas un nom …
我很新兴,但我想从Hive表中获得的关系创建一个图表.我找到了一个函数,它应该允许这个而不定义顶点,但我无法让它工作.
我知道这不是一个可重现的例子,但这是我的代码:
import org.apache.spark.SparkContext
import org.apache.spark.graphx._
import org.apache.spark.rdd.RDD
val sqlContext= new org.apache.spark.sql.hive.HiveContext(sc)
val data = sqlContext.sql("select year, trade_flow, reporter_iso, partner_iso, sum(trade_value_us) from comtrade.annual_hs where length(commodity_code)='2' and not partner_iso='WLD' group by year, trade_flow, reporter_iso, partner_iso").collect()
val data_2010 = data.filter(line => line(0)==2010)
val couples = data_2010.map(line=>(line(2),line(3)) //country to country
val graph = Graph.fromEdgeTuples(couples, 1)
Run Code Online (Sandbox Code Playgroud)
最后一行生成以下错误:
val graph = Graph.fromEdgeTuples(sc.parallelize(couples), 1)
<console>:31: error: type mismatch;
found : Array[(Any, Any)]
required: Seq[(org.apache.spark.graphx.VertexId,org.apache.spark.graphx.VertexId)]
Error occurred in an application involving default arguments.
val graph = Graph.fromEdgeTuples(sc.parallelize(couples), …Run Code Online (Sandbox Code Playgroud) 在这里可以找到一些上下文,我的想法是我已经从Hive表上的请求中收集的元组创建了一个图形.这些对应于国家之间的贸易关系.以这种方式构建图形后,顶点未标记.我想学习学位分布并获得最相关国家的名字.我尝试了两个选项:
在这两种情况下,我都会收到以下错误:任务不可序列化
import org.apache.spark.SparkContext
import org.apache.spark.graphx._
import org.apache.spark.rdd.RDD
val sqlContext= new org.apache.spark.sql.hive.HiveContext(sc)
val data = sqlContext.sql("select year, trade_flow, reporter_iso, partner_iso, sum(trade_value_us) from comtrade.annual_hs where length(commodity_code)='2' and not partner_iso='WLD' group by year, trade_flow, reporter_iso, partner_iso").collect()
val data_2010 = data.filter(line => line(0)==2010)
val couples = data_2010.map(line=>(line(2),line(3))) //pays->pays
Run Code Online (Sandbox Code Playgroud)
情侣看起来像这样:数组[(任何,任何)] =数组((MWI,MOZ),(WSM,AUS),(MDA,CRI),(KNA,HTI),(PER,ERI),(SWE,CUB) ),...
val idMap = sc.broadcast(couples
.flatMap{case (x: String, y: String) => Seq(x, y)}
.distinct
.zipWithIndex
.map{case (k, v) => (k, v.toLong)}
.toMap)
val edges: RDD[(VertexId, VertexId)] …Run Code Online (Sandbox Code Playgroud) 出于特定目的,我必须使用 Wordnet 1.6 而不是 nltk 包中实现的当前版本。然后我在这里下载了旧版本,并尝试使用 french 选项运行一个简单的代码提取。
from collections import defaultdict
import nltk
#nltk.download()
import os
import sys
from nltk.corpus import WordNetCorpusReader
cwd = os.getcwd()
nltk.data.path.append(cwd)
wordnet16_dir="wordnet-1.6/"
wn16_path = "{0}/dict".format(wordnet16_dir)
wn = WordNetCorpusReader(os.path.abspath("{0}/{1}".format(cwd, wn16_path)), nltk.data.find(wn16_path))
senses=wn.synsets('gouvernement',lang=u'fre')
Run Code Online (Sandbox Code Playgroud)
看来我手动下载的wordnet无法链接到处理外语的nltk模块的文件,我得到的错误如下:
Traceback (most recent call last):
File "C:/Users/Stephanie/Test/temp.py", line 16, in <module>
senses=wn.synsets('gouvernement',lang=u'fre')
File "C:\Python27\lib\site-packages\nltk\corpus\reader\wordnet.py", line 1419, in synsets
self._load_lang_data(lang)
File "C:\Python27\lib\site-packages\nltk\corpus\reader\wordnet.py", line 1064, in _load_lang_data
if lang not in self.langs():
File "C:\Python27\lib\site-packages\nltk\corpus\reader\wordnet.py", line 1088, in langs
fileids = …Run Code Online (Sandbox Code Playgroud) 我试图使用Caret附带的包装中未包含的火车,但收到一个我无法弄清楚的错误,知道吗?我使用以下链接开始
bmsMeth<-list(type="Regression",library="BMS",loop=NULL,prob=NULL)
prm<-data.frame(parameter="mprior.size",class="numeric",label="mprior.size")
bmsMeth$parameters<-prm
bmsGrid<-function(x,y,len=NULL){
out<-expand.grid(mprior.size=seq(2,3,by=len))
out
}
bmsMeth$grid<-bmsGrid
bmsFit<-function(x,y,param, lev=NULL) {bms(cbind(y,x),burn=5000,iter=100000,nmodel=1000,mcmc="bd",g="UIP",mprior.size=param$mprior.size)}
bmsMeth$fit<-bmsFit
bmsPred<-function(modelFit,newdata,preProcess=NULL,submodels=NULL){predict(modelFit,newdata)}
bmsMeth$predict<-bmsPred
library(caret)
data.train<-data.frame(runif(100),runif(100),runif(100),runif(100),runif(100))#synthetic data for testing
bms(cbind(data.train[,1],data.train[,-1]),burn=5000,iter=100000,nmodel=1000,mcmc="bd",g="UIP",mprior.size=2)#function out of caret is working
preProcess=c('center','scale')
myTimeControl <- trainControl(method = "timeslice",initialWindow = 0.99*nrow(data.train), horizon = 1, fixedWindow = FALSE)
tune <- train(data.train[,-1],data.train[,1],preProcess=preProcess,method = bmsMeth,tuneLength=2,metric= "RMSE",trControl =myTimeControl,type="Regression")
Run Code Online (Sandbox Code Playgroud)
错误我得到:
train.default(data.train [,-1],data.train [,1],preProcess = preProcess,中的错误:正在停止:警告消息:1:在eval(expr,envir,enclos)中:模型拟合失败对于Training1:mprior.size = 2方法中的错误$ fit(x = x,y = y,wts = wts,param = tuneValue,lev = obsLevels,:未使用的参数(wts = wts,last = last,classProbs = classProbs,类型=“回归”)
2:在nominalTrainWorkflow(x = x,y = y,wts =权重,info …
我使用wordnet库,我想获得令牌的wordnet索引以供将来使用.
library(wordnet)
filter <- getTermFilter("ExactMatchFilter", "proud", TRUE)
terms <- getIndexTerms("ADJECTIVE", 1, filter)
terms
[1] "Java-Object{Lemma: proud POS: adj Tag-Sense-Count: 2\nList of Synsets (2)\n #1: 1817423\n #2: 1231908\nList of Pointers (4)\n #1: ! (Antonym)\n #2: & (Similar to)\n #3: ^ (Also see)\n #4: = (Attribute)}"
Run Code Online (Sandbox Code Playgroud)
terms是一个带有一些方法的Java-Object:
names(terms[[1]])
[1] "getLemma()" "getSynsets()" "getPointers()" "getPartOfSpeech()" "getSynsetCount()" "getTagSenseCount()" "getPointerCount()"
[8] "toString()" "compareTo(" "compareTo(" "wait(" "wait(" "wait()" "equals("
[15] "hashCode()" "getClass()" "notify()" "notifyAll()"
Run Code Online (Sandbox Code Playgroud)
但似乎并非所有工作都有效
getLemma(terms[[1]])
[1] "proud"
toString(terms[[1]])
Erreur dans as.character.default(<S4 object of class …Run Code Online (Sandbox Code Playgroud)