2017-05-18 7 views
0

私はRで持っているリストから単一の単語/トークンのPOSタグを作成する方法を探しています。私は単一のトークンに対して行うと精度が低下することを知っています文章の代わりに、私が持っているデータはWikipediaから「編集を削除する」ものであり、人々は主に全文の代わりに単一の未結合語を削除します。私はこの質問をPythonのために数回見ましたが、私はまだRのための解決策を見つけていません。Rで単語/トークンのPOSタグを作成する

私のデータはsomehwatこの

Tokens <- list(c("1976","green","Normandy","coast","[", "[", "template" "]","]","Fish","visting","England","?")) 

、理想的には次のようになります、私はこのような何かを持っていると思いますが、返さ:

1976     CD 
green     JJ 
Normandy    NN 
coast     NN 
[      x 
[      x 
template    NN 
]      x 
]      x 
Fish     NN 
visiting    VBG 
England    NN 
?      x 

を私はいくつかのwebsitesがそのオンラインをやったが、私は、彼らことを疑いますRの中の何かを実行しています。彼らはまた、単一の単語/トークンでそれを使用しないことを明確に述べています。

私の質問:これをRで妥当な精度で行うことは可能ですか?どのようにコードが文章構造を組み込んでいないように見えるでしょうか?リストを巨大なタグ付きの日記と比較するのは簡単でしょうか?

+0

上記の答えはspacy 1.0にのみ適用されます。 新しい方法については、spacy 2.0ドキュメントを参照してください。 –

答えて

2

一般に、ネイティブRに適切なポストタグャーはなく、すべての解決策は外部のライブラリに依存しています。そのようなソリューションの1つとして、spacyrというパッケージをバックエンドでspaCyを使用して試すことができます。それはCRANにはまだありませんが、すぐにそうです。

https://github.com/kbenoit/spacyr

のサンプルコードは、このようなものです:

library(spacyr) 
spacy_initialize() 

Tokens <- c("1976","green","Normandy","coast","[", "[", "template", "]","]", 
      "Fish","visting","England","?") 
spacy_parse(Tokens, tag = TRUE) 

と出力は次のようである:

doc_id sentence_id token_id token lemma pos tag entity 
1 text1   1  1  1976  1976 NUM CD DATE_B 
2 text2   1  1 green green ADJ JJ  
3 text3   1  1 Normandy normandy PROPN NNP ORG_B 
4 text4   1  1 coast coast NOUN NN  
5 text5   1  1  [  [ PUNCT -LRB-  
6 text6   1  1  [  [ PUNCT -LRB-  
7 text7   1  1 template template NOUN NN  
8 text8   1  1  ]  ] PUNCT -RRB-  
9 text9   1  1  ]  ] PUNCT -RRB-  
10 text10   1  1  Fish  fish NOUN NN  
11 text11   1  1 visting  vist VERB VBG  
12 text12   1  1 England england PROPN NNP GPE_B 
13 text13   1  1  ?  ? PUNCT  . 

パッケージは、より多くを行うことができますが、あなたが必要なものを見つけることができますtagフィールド。

注:(2017年5月20日)

spacyrパッケージがCRANにあるが、バージョンが非ASCII文字を含むいくつかの問題があります。私たちはCRAN提出後に問題を認識し、githubのバージョンで解決しました。ドイツ語のテキストに使用する予定の場合は、githubに最新のマスターをインストールしてください。 devtools::install_github("kbenoit/spacyr", build_vignettes = FALSE) この改訂版は、次回のアップデートでCRANパッケージに組み込まれます。

注2:

WindowsとMac上でスペイシーとspacyrをインストールするための詳細な手順があります。

のWindows: https://github.com/kbenoit/spacyr/blob/master/inst/doc/WINDOWS.md

マック:私は私のためamatsuo_netの提案を動作させるために取った https://github.com/kbenoit/spacyr/blob/master/inst/doc/MAC.md

+1

ねえ、答えてくれてありがとう! Rのためのすばらしいパッケージのように見える! 4時間のトラブルシューティング(Mostly With Python)でしたが、今はそれが私の仕事です!将来誰かが同じ問題に遭遇した場合、私は以下のステップを別々の答えでリストアップします!もう一度ありがとう、これは素晴らしいです! –

1

相続人のステップ:

アナコンダのためスペイシーと英語の言語ライブラリをインストール
  1. AdminとしてAnacondaプロンプトを開く

    が実行さ:

    activate py36

    conda config --add channels conda-forge

    conda install spacy

    python -m spacy link en_core_web_sm en

  2. Rスタジオのラッパーを使用する:

    install.packages("fastmatch") install.packages("RcppParallel")

    library(fastmatch) library(RcppParallel)

    devtools::install_github("kbenoit/spacyr", build_vignettes = FALSE)

    library(spacyr)

    spacy_initialize(condaenv = "py36")

    Tokens <- c("1976","green","Normandy","coast","[", "[", "template", "]","]","Fish","visting","England","?");Tokens

    spacy_parse(Tokens, tag = TRUE)

関連する問題