Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 NLTK布朗语料库-添加自己的标记句子_Python 2.7_Nltk - Fatal编程技术网

Python 2.7 NLTK布朗语料库-添加自己的标记句子

Python 2.7 NLTK布朗语料库-添加自己的标记句子,python-2.7,nltk,Python 2.7,Nltk,我试图添加一个带有标记句子的文件(布朗语料库可以读取)。 我所做的是转到nltk_data/corpora/brown,添加了文件tagged5,转到cats.txt,并添加了一行tagged5作业 但当我这样做的时候: brown_homework = brown.tagged_sents(categories='homework') 它只给了我ValueError:“在类别映射文件cats.txt:tagged5中找不到” 尽管文件tagged5与所有其他语料库文件一起存在 有什么想法吗?

我试图添加一个带有标记句子的文件(布朗语料库可以读取)。 我所做的是转到
nltk_data/corpora/brown
,添加了文件
tagged5
,转到
cats.txt
,并添加了一行
tagged5作业

但当我这样做的时候:

brown_homework = brown.tagged_sents(categories='homework')
它只给了我
ValueError:“在类别映射文件cats.txt:tagged5中找不到”

尽管文件
tagged5
与所有其他语料库文件一起存在


有什么想法吗?

让我们尝试将一个文件插入
nltk_data/corpora/brown
目录:

alvas@ubi:~/nltk_data/corpora/brown$ echo "This/DT is/VB a/DT foobar/JJ sentence/NN ./." > testfile
alvas@ubi:~/nltk_data/corpora/brown$ echo "testfile homework">>cats.txt
alvas@ubi:~/nltk_data/corpora/brown$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from nltk.corpus import brown
>>> "testfile" in brown.fileids()
False
似乎将文件直接注入目录不起作用。但是读取文件是有效的:

>>> brown.raw('testfile')
u'This/DT is/VB a/DT foobar/JJ sentence/NN ./.\n'
>>> brown.tagged_sents('testfile')
[[(u'This', u'DT'), (u'is', u'VB'), (u'a', u'DT'), (u'foobar', u'JJ'), (u'sentence', u'NN'), (u'.', u'.')]]
但是,您仍然无法从
brown.categories()
fileid()
访问它:

现在让我们看一下LyyCypUsLoad(),参见

请注意初始化LazyCorpusLoader时的
r'c[a-z]\d\d'
参数。布朗语料库似乎有一个特定的命名约定

它必须以
c
开头,然后是
[a-z]
中的一个字符,然后是两位数字。因此,让我们使用文件名
cz07
而不是
testfile
。(原始棕色语料库中没有cz07,因此没有问题)

现在让我们删除
testfile
和我们在
cats.txt
中添加的最后一行:

alvas@ubi:~/nltk_data/corpora/brown$ rm testfile
alvas@ubi:~/nltk_data/corpora/brown$ sed -i '$d' cats.txt 
alvas@ubi:~/nltk_data/corpora/brown$ ls cz07
ls: cannot access cz07: No such file or directory
alvas@ubi:~/nltk_data/corpora/brown$ echo "This/DT is/VB a/DT foobar/JJ sentence/NN ./." > cz07
alvas@ubi:~/nltk_data/corpora/brown$ echo "cz07 homework" >>cats.txt
alvas@ubi:~/nltk_data/corpora/brown$ python

>>> from nltk.corpus import brown
>>> 'cz07' in brown.fileids()
True
>>> 'homework' in brown.categories()
True
>>> brown.tagged_sents(categories='homework')
[[(u'This', u'DT'), (u'is', u'VB'), (u'a', u'DT'), (u'foobar', u'JJ'), (u'sentence', u'NN'), (u'.', u'.')]]

请记住删除已添加的额外文件:

>> exit()
alvas@ubi:~/nltk_data/corpora/brown$ sed -i '$d' cats.txt
alvas@ubi:~/nltk_data/corpora/brown$ rm cz07

tagged5
中的内容是什么?我不知道你为什么要这样做,但咀嚼棕色语料库是一种可怕的黑客行为。如果您只是想使用Brown语料库读取器访问您的文件,请仅使用您的数据初始化一个新的
CategorizedTaggedCorpusReader
。如果你有一个不同的目标,解释一下,也许有一个更干净的解决方案。
alvas@ubi:~/nltk_data/corpora/brown$ rm testfile
alvas@ubi:~/nltk_data/corpora/brown$ sed -i '$d' cats.txt 
alvas@ubi:~/nltk_data/corpora/brown$ ls cz07
ls: cannot access cz07: No such file or directory
alvas@ubi:~/nltk_data/corpora/brown$ echo "This/DT is/VB a/DT foobar/JJ sentence/NN ./." > cz07
alvas@ubi:~/nltk_data/corpora/brown$ echo "cz07 homework" >>cats.txt
alvas@ubi:~/nltk_data/corpora/brown$ python

>>> from nltk.corpus import brown
>>> 'cz07' in brown.fileids()
True
>>> 'homework' in brown.categories()
True
>>> brown.tagged_sents(categories='homework')
[[(u'This', u'DT'), (u'is', u'VB'), (u'a', u'DT'), (u'foobar', u'JJ'), (u'sentence', u'NN'), (u'.', u'.')]]
>> exit()
alvas@ubi:~/nltk_data/corpora/brown$ sed -i '$d' cats.txt
alvas@ubi:~/nltk_data/corpora/brown$ rm cz07