从自由文本中提取位置的推荐方法有哪些?
我能想到的是使用像"单词......在位置"这样的正则表达式规则.但是有比这更好的方法吗?
此外,我可以考虑使用包含国家和城市名称的查找哈希表表,然后将文本中每个提取的标记与哈希表的标记进行比较.
有人知道更好的方法吗?
编辑:我正在尝试从推文文本中提取位置.因此,大量推文的问题也可能影响我对方法的选择.
nlp named-entity-recognition text-mining information-extraction named-entity-extraction
我是python和numpy的新手.我阅读了几个教程,但仍然对昏暗,等级,形状,aix和尺寸的差异感到困惑.我的想法似乎停留在矩阵表示.所以如果你说A是一个看起来像这样的矩阵:
A =
1 2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)
那么我能想到的只是一个2x3矩阵(两行三列).在这里,我知道形状是2x3.但我真的无法超越二维矩阵的思维.我不明白例如dot()文档,当它表示"对于N维,它是a的最后一个轴上的和产品,而b的倒数第二个".我很困惑,无法理解这一点.我不明白,如果V是N:1向量而M是N:N矩阵,点(V,M)或点(M,V)如何工作以及它们之间的差异.
那么有人可以向我解释什么是N维数组,什么是形状,什么是轴以及它如何与dot()函数的文档相关?如果解释可视化这些想法会很棒.
目前我正在研究如何使用局部敏感散列查找最近邻居.然而,当我在阅读论文和搜索网页时,我发现了两种算法:
1-使用L个具有L个随机LSH函数的哈希表,从而增加两个相似的文档获得相同签名的机会.例如,如果两个文档的80%相似,则有80%的可能性从一个LSH函数获得相同的签名.但是,如果我们使用多个LSH函数,那么从一个LSH函数获取文档的相同签名的可能性就更高.这个方法在维基百科中解释,我希望我的理解是正确的:
http://en.wikipedia.org/wiki/Locality-sensitive_hashing#LSH_algorithm_for_nearest_neighbor_search
2-另一种算法使用了一篇论文中的方法(第5节),称为:来自Moses S. Charikar的舍入算法的相似性估计技术.它基于使用一个LSH函数生成签名,然后在其上应用P排列,然后对列表进行排序.其实我不太了解这个方法,我希望有人能澄清一下.
我的主要问题是:为什么有人会使用第二种方法而不是第一种方法?因为我发现它更容易,更快.
我真的希望有人可以帮忙!
编辑:实际上我不确定@ Raff.Edward是否在"第一"和"第二"之间混合.因为只有第二种方法使用半径,而第一种方法只使用由散列族F组成的新散列族g.请检查维基百科链接.他们只使用了很多g函数来生成不同的签名,然后对于每个g函数,它都有一个相应的哈希表.为了找到一个点的最近邻居,您只需让该点遍历g函数并检查相应的哈希表是否存在冲突.因此,我将其理解为更多功能......更多碰撞机会.
我没有发现任何关于第一种方法的半径.
对于第二种方法,它们仅为每个特征向量生成一个签名,然后对它们应用P置换.现在我们有P个排列列表,其中每个包含n个签名.然后他们然后从P对每个列表进行排序.在给定查询点q之后,他们为它生成签名然后在其上应用P排列,然后在每个置换和排序的P列表上使用二进制搜索来找到最相似的签名.查询q.我在阅读了很多关于它的论文之后得出了这个结论,但我仍然不明白为什么有人会使用这种方法,因为它看起来并不快找到汉明距离!
对我来说,我只需要执行以下操作来查找查询点q的最近邻居.给定签名列表N,我将生成查询点q的签名,然后扫描列表N并计算N中每个元素与q的签名之间的汉明距离.因此,我最终会得到q的最近邻居.它需要O(N)!!!
我有一个HashMap.我像这样循环遍历地图:
Map<Long, Integer> map = new HashMap<Long, Integer>();
for (Long key : map.keySet() ) {
int value = map.get(key);
value--;
map.put(key, value);
}
Run Code Online (Sandbox Code Playgroud)
我用来更新地图安全的方式是什么?在某种意义上它是安全的,因为迭代它不会损坏地图.
给定一个networkx图,有没有办法将节点的名称映射到邻接矩阵中的索引,反之亦然?
我知道它G.nodes()返回一个列表,其中列表中节点的索引对应于它在邻接矩阵中的索引。
因此,为了从节点的名称映射到节点的索引,我采用了一种非常愚蠢的方法将节点的索引存储在字典中并按节点名称进行映射。
为了从节点索引映射到它的名称,我创建了另一个类似于之前的字典(键和值切换)。
有一个更好的方法吗?
我正在使用Pandas绘制散点图矩阵:from pandas.tools.plotting import scatter_matrix.问题是,列中的列名DataFrame太长,我需要它们在x轴上是垂直的,在y轴上是水平的,所以它们可以适合.我无法弄清楚如何在熊猫中做到这一点.我知道怎么做,matplotlib但不是在熊猫.
我的代码:
pylab.clf()
df = pd.DataFrame(X, columns=the_labels)
axs = scatter_matrix(df, alpha=0.2, diagonal='kde')
Run Code Online (Sandbox Code Playgroud)
编辑:我需要使用pylab.clf()因为我正在绘制很多数字,所以pylab.figure()每次调用太耗费内存.
我正在进行图形分析.我想计算N×N相似度矩阵,其包含每两个顶点之间的Adamic Adar相似性.为了概述Adamic Adar,让我从这个介绍开始:
给出A无向图的邻接矩阵G.CN是一组两个顶点的所有常见的邻居x,y.两个顶点的公共邻居是两个顶点具有边/链接的顶点,即两个顶点对应的公共邻居节点都具有1 A.k_n是节点的程度n.
Adamic-Adar定义如下: 
我计算它的尝试是从中获取x和y节点的两行,A然后对它们求和.然后查找具有2值的元素,然后获取它们的度数并应用等式.然而,计算需要花费很长时间.我尝试使用包含1032个顶点的图形,并且花费了大量时间进行计算.它从7分钟开始,然后我取消了计算.所以我的问题是:有更好的计算算法吗?
这是我在python中的代码:
def aa(graph):
"""
Calculates the Adamic-Adar index.
"""
N = graph.num_vertices()
A = gts.adjacency(graph)
S = np.zeros((N,N))
degrees = get_degrees_dic(graph)
for i in xrange(N):
A_i = A[i]
for j in xrange(N):
if j != i:
A_j = A[j]
intersection = A_i + A_j
common_ns_degs = list()
for index in …Run Code Online (Sandbox Code Playgroud) 我试图只使用正则表达式匹配阿拉伯语文本,但我得到一个例外.这是我的代码:
txt.matches("\\P{Arabic}+")
Run Code Online (Sandbox Code Playgroud)
这是例外:
线程"main"中的异常java.util.regex.PatternSyntaxException:索引9附近的未知字符属性名{阿拉伯语}\P {阿拉伯语} +
R无法正确显示阿拉伯文字.当我使用阿拉伯语时,我会得到非常奇怪的东西.这是一个截图:

问题是我想用阿拉伯语文本创建一个wordcloud,我需要先解决这个问题.
R版本:R 2.15.2 GUI 1.53 Leopard构建64位(6335)
以下是更多信息:
> options("encoding")
$encoding
[1] "native.enc"
> Encoding("????")
[1] "unknown"
Run Code Online (Sandbox Code Playgroud)
SessionInfo():
> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] C/C/C/C/de_DE/C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_2.15.2
>
Run Code Online (Sandbox Code Playgroud)
一些修补:
> x = "?????"
> Encoding(x) = "UTF-8"
> x
[1] "<U+0645><U+0631><U+062D><U+0628><U+0627>"
> Encoding(iconv(x))
[1] "unknown"
Run Code Online (Sandbox Code Playgroud)
更多信息:
> Sys.getlocale()
[1] "C/C/C/C/de_DE/C"
> Sys.setlocale("LC_ALL", "en_US.utf8")
[1] ""
Warning message: …Run Code Online (Sandbox Code Playgroud) 我正在使用 scikit 来训练分类器。我想知道是否有一个选项可以获取分类器/估计器完成训练任务所需的时间。