Nlp 在pyspark中编写一个自定义的NER和POS标记器,以便在管道方法中用于文本输入的特征提取

Nlp 在pyspark中编写一个自定义的NER和POS标记器,以便在管道方法中用于文本输入的特征提取,nlp,pyspark,feature-extraction,Nlp,Pyspark,Feature Extraction,我正在做一个文本分类项目,我正在使用mllib中的管道方法来链接特征提取阶段。我的数据集由英语句子组成。我有mllib中的标记器和TFIDF矢量器库,可以直接在管道中使用 但作为特征提取过程的一部分,我还需要提取POS标记和NER标记。Pyspark没有用于它的库,我不知道如何为NER和词性标记编写自定义转换器。我对Spark和Python非常陌生。我正在使用Spark 1.6和Python 2.7。您可以尝试以下方法: class POSWordTagger(转换器、HasInputCol、H

我正在做一个文本分类项目,我正在使用mllib中的管道方法来链接特征提取阶段。我的数据集由英语句子组成。我有mllib中的标记器和TFIDF矢量器库,可以直接在管道中使用

但作为特征提取过程的一部分,我还需要提取POS标记和NER标记。Pyspark没有用于它的库,我不知道如何为NER和词性标记编写自定义转换器。我对Spark和Python非常陌生。我正在使用Spark 1.6和Python 2.7。

您可以尝试以下方法:

class POSWordTagger(转换器、HasInputCol、HasOutputCol):
@仅关键字_
def u uu init uuuuu(self,inputCol=None,outputCol=None,stopwords=None):
super(POSWordTagger,self)。\uuuu init\uuuuu()
self.stopwords=Param(self,“stopwords”,“”)
self.\u setDefault(stopwords=set())
kwargs=自我初始化输入kwargs
self.setParams(**kwargs)
@仅关键字_
def setParams(self,inputCol=None,outputCol=None,stopwords=None):
kwargs=self.setParams.\u输入\u kwargs
返回自我设置(**kwargs)
def设置主题词(自身、值):
self.\u paramMap[self.stopwords]=值
回归自我
def getStopwords(self):
返回self.getOrDefault(self.stopwords)
def_变换(自,数据集):
def f(s):
tokens=nltk.tokenize.wordpunct\u tokenize(s)
pos_标记=nltk.pos_标记(令牌)
返回pos_标签
t=ArrayType(StringType())
out\u col=self.getOutputCol()
in_col=dataset[self.getInputCol()]
返回dataset.withColumn(列外,自定义项(f,t)(列内))

工作得非常好。我还想到了如何继续做NER。谢谢!