擅长:python、mysql、java
<p>我使用的是Linux,以下对代码的修改(使用玩具语料库文件)对我来说是正确的:</p>
<pre><code>import nltk
from nltk.corpus import CategorizedPlaintextCorpusReader
import os
mr = CategorizedPlaintextCorpusReader(
'/home/ely/programming/nltk-test/mycorpus',
r'(?!\.).*\.txt',
cat_pattern=os.path.join(r'(neg|pos)', '.*')
)
print(len(mr.categories()))
</code></pre>
<p>这表明在Windows系统上使用<code>cat_pattern</code>作为文件系统分隔符的<code>/</code>字符串有问题。你知道吗</p>
<p>在我的示例中使用<code>os.path.join</code>,或者如果使用python3使用<code>pathlib</code>,这将是一个很好的解决方法,因此它不受操作系统的影响,并且不会出现与文件系统分隔符混合的正则表达式转义斜杠。你知道吗</p>
<p>事实上,对于参数字符串中所有文件系统分隔符的情况,您都可以使用这种方法,而且这通常是一个很好的习惯,可以使代码具有可移植性,避免使用奇怪的字符串。你知道吗</p>