在linux下,我设置了env var $ NLTK_DATA('/ home/user/data/nltk'),并按预期吹出测试工作
>>> from nltk.corpus import brown
>>> brown.words()
['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', ...]
Run Code Online (Sandbox Code Playgroud)
但是当运行另一个python脚本时,我得到了:
LookupError:
**********************************************************************
Resource u'tokenizers/punkt/english.pickle' not found. Please
use the NLTK Downloader to obtain the resource: >>>
nltk.download()
Searched in:
- '/home/user/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- u''
Run Code Online (Sandbox Code Playgroud)
我们可以看到,在手动附加NLTK_DATA目录后,nltk不会向搜索路径添加$ NLTK_DATA:
nltk.data.path.append("/NLTK_DATA_DIR");
Run Code Online (Sandbox Code Playgroud)
脚本按预期运行,问题是:
如何让nltk自动将$ NLTK_DATA添加到它的搜索路径?
如何绘制 50 个最不常见的单词?
也许是我想得太复杂了。这是我得到这些词的方式:
distr = nltk.FreqDist(word for word in items)
words = distr .keys()
seldomwords = words [:50]
Run Code Online (Sandbox Code Playgroud)
我现在该如何绘制这个?
通过plot
函数,FreqDist
我得到所有或仅x个最常见的单词。
我尝试过类似的东西:
distr .plot(:50)
Run Code Online (Sandbox Code Playgroud)
但这在语法上是不正确的。
鉴于DNN(多层感知器的简单情况)分别具有5个和3个维度的2个隐藏层,我正在训练模型以识别OR门.
使用tensorflow学习,似乎它给了我反向输出,我不知道为什么:
from tensorflow.contrib import learn
classifier = learn.DNNClassifier(hidden_units=[5, 3], n_classes=2)
or_input = np.array([[0.,0.], [0.,1.], [1.,0.]])
or_output = np.array([[0,1,1]]).T
classifier.fit(or_input, or_output, steps=0.05, batch_size=3)
classifier.predict(np.array([ [1., 1.], [1., 0.] , [0., 0.] , [0., 1.]]))
Run Code Online (Sandbox Code Playgroud)
[OUT]:
array([0, 0, 1, 0])
Run Code Online (Sandbox Code Playgroud)
如果我这样做"老派",没有tensorflow.learn
如下,我得到了预期的答案.
import tensorflow as tf
# Parameters
learning_rate = 1.0
num_epochs = 1000
# Network Parameters
input_dim = 2 # Input dimensions.
hidden_dim_1 = 5 # 1st layer number of features
hidden_dim_2 = 3 # 2nd layer number of …
Run Code Online (Sandbox Code Playgroud) python machine-learning neural-network deep-learning tensorflow
我有一个文件:
$ cat test.txt
a b c
d e f
x y z
Run Code Online (Sandbox Code Playgroud)
我可以在Python中执行此操作来重新排列列:
import random
with open('test.txt', 'r') as fin:
with open('test-shuffle.txt', 'w') as fout:
for line in fin:
line = line.strip().split('\t')
random.shuffle(line)
fout.write('\t'.join(line) + '\n')
Run Code Online (Sandbox Code Playgroud)
[OUT]:
$ cat test-shuffle.txt
b c a
e d f
x y z
Run Code Online (Sandbox Code Playgroud)
但有没有办法在命令行上执行此操作?也许有cut
,awk
,sed
,等?
此外,如果我只想对特定列进行洗牌,那么在命令行上是否也可以这样做,例如,如果我只想要洗牌第2列和第3列:
import random
with open('test.txt', 'r') as fin:
with open('test-shuffle.txt', 'w') as fout:
for line in fin:
line = line.strip().split('\t')
first , second, …
Run Code Online (Sandbox Code Playgroud) 如何选择最小数量.从列表> 0?
我试过了:
min()
在筛选器列表上执行a即
>>> x = (-3155, 611, 1284)
>>> min_x_more_than_0 = min([i for i in x if i > 0])
>>> min_x_more_than_0
611
Run Code Online (Sandbox Code Playgroud)
必须有更好/更快的方法来做到这一点.想象一下,X的长度是1,000,000,000,在列表中循环是相当低效的.
在 Python 中,我可以像这样对斜杠进行字符串替换:
>>> s = 'ab\c'
>>> s.replace('\\', '\\\\')
'ab\\\\c'
>>> print s.replace('\\', '\\\\')
ab\\c
Run Code Online (Sandbox Code Playgroud)
在 Julia 中,当我可以这样做时:
julia> s = "ab\\c"
"ab\\c"
julia> replace(s, "\\\\", "\\\\\\\\")
"ab\\c"
Run Code Online (Sandbox Code Playgroud)
我试过这个,但它会引发一些语法错误:
julia> replace(s, r"\", r"\\")
ERROR: syntax: "\" is not a unary operator
Run Code Online (Sandbox Code Playgroud) 我是 spaCy 和 NLTK 的新手,所以如果这似乎是一个愚蠢的问题,我提前道歉。
基于 spaCy 教程,我必须使用以下命令将文本加载到文档中。
doc = nlp(u'Hello, world. Natural Language Processing in 10 lines of code.')
Run Code Online (Sandbox Code Playgroud)
但是,我在 sql server 或 excel 上以表格格式存储了很多文本。它基本上有两列。第一列具有唯一标识符。第二列有一个简短的文本。
我如何将它们加载到 spaCy 中?我是否需要将它们转换为 Numpy 数组或 Pandas 数据帧,然后将其加载到文档中?
在此先感谢您的帮助!
如果我在 python 中有一个单词列表,例如:
words = ["blue", "red", "ball"]
Run Code Online (Sandbox Code Playgroud)
有没有办法使用 WordNet 以编程方式为这组单词生成上位词?
给定一个示例数据框,其中包含自由文本的第二列和第三列
>>> import pandas as pd
>>> lol = [[1,2,'abc','foo\nbar'], [3,1, 'def\nhaha', 'love it\n']]
>>> pd.DataFrame(lol)
0 1 2 3
0 1 2 abc foo\nbar
1 3 1 def\nhaha love it\n
Run Code Online (Sandbox Code Playgroud)
目标是替换为\n
to (空格)并剥离第2列和第3列中的字符串,以实现:
>>> pd.DataFrame(lol)
0 1 2 3
0 1 2 abc foo bar
1 3 1 def haha love it
Run Code Online (Sandbox Code Playgroud)
如何通过熊猫数据框用特定列的空格替换换行符?
我已经试过了:
>>> import pandas as pd
>>> lol = [[1,2,'abc','foo\nbar'], [3,1, 'def\nhaha', 'love it\n']]
>>> replace_and_strip = lambda x: x.replace('\n', ' ').strip()
>>> lol2 = …
Run Code Online (Sandbox Code Playgroud) 这个问题给出了对 y 轴进行排序的解决方案:来自枢轴的 seaborn heatmap 中的数据顺序 但是如何对 x 轴和 y 轴执行自定义排序?
没有自定义排序,我们看到的顺序:
代码:
lol = [['apple', 'phone', 10], ['samsung', 'tv', 20], ['apple', 'tv', 5], ['google', 'tv', 8], ['google', 'phone', 9], ['samsung', 'phone', 3]]
df = pd.DataFrame(lol)
df = df.rename(columns={0:'brand', 1:'product', 2:'count'})
df = df.pivot('brand', 'product', 'count')
ax = sns.heatmap(df)
plt.show()
Run Code Online (Sandbox Code Playgroud)
[出去]:
如果我需要对 y 轴进行排序以显示 order samsung, apple, google
,我可以这样做:
lol = [['apple', 'phone', 10], ['samsung', 'tv', 20], ['apple', 'tv', 5], ['google', 'tv', 8], ['google', …
Run Code Online (Sandbox Code Playgroud)