2017-03-28 8 views
-2

私はテキスト分類プロジェクトを行い、mllibのパイプライン方法を使用して特徴抽出段階を連結しています。私のデータセットは英文で構成されています。私はパイプラインで直接使用できるmllibのTokenizerとTFIDF Vectorizerライブラリを持っています。テキスト入力の特徴抽出のパイプライン方法で使用するカスタムNERおよびPOSタグャーの作成

しかし、特徴抽出プロセスの一環として、POSタグとNERタグも抽出する必要があります。 Pysparkにはライブラリがありません。NERとPOSのタグ付け用にカスタムトランスを書く方法はわかりません。私はSparkとPythonの新機能です。私はSpark 1.6とPython 2.7を使用しています。

答えて

0

あなたはこれを試すことができます。

class POSWordTagger(Transformer, HasInputCol, HasOutputCol): 

    @keyword_only 
    def __init__(self, inputCol=None, outputCol=None, stopwords=None): 
     super(POSWordTagger, self).__init__() 
     self.stopwords = Param(self, "stopwords", "") 
     self._setDefault(stopwords=set()) 
     kwargs = self.__init__._input_kwargs 
     self.setParams(**kwargs) 


    @keyword_only 
    def setParams(self, inputCol=None, outputCol=None, stopwords=None): 
     kwargs = self.setParams._input_kwargs 
     return self._set(**kwargs) 


    def setStopwords(self, value): 
     self._paramMap[self.stopwords] = value 
     return self 

    def getStopwords(self): 
     return self.getOrDefault(self.stopwords) 

    def _transform(self, dataset): 

     def f(s): 
     tokens = nltk.tokenize.wordpunct_tokenize(s) 
     pos_tags = nltk.pos_tag(tokens) 
     return pos_tags 

     t = ArrayType(StringType()) 
     out_col = self.getOutputCol() 
     in_col = dataset[self.getInputCol()] 
     return dataset.withColumn(out_col, udf(f, t)(in_col)) 
+0

は完全にうまく働きました。私はまた、NERを進めるための方法についてのアイディアを得ました。どうもありがとう! – Aishwarya

関連する問題