我正在寻找一个可以对德语单词进行形态分析的库,即它将任何单词转换为其根形式并提供有关所分析单词的元信息.
例如:
gegessen -> essen
wurde [...] gefasst -> fassen
Häuser -> Haus
Hunde -> Hund
Run Code Online (Sandbox Code Playgroud)
我的收藏:
编辑:我知道没有任何字典就没有办法进行形态分析,因为不规则的单词.当我说,我更喜欢没有字典的图书馆,我的意思是那些完整的字典,它们映射每一个字:
arbeite -> arbeiten
arbeitest -> arbeiten
arbeitet -> arbeiten
arbeitete -> arbeiten
arbeitetest -> arbeiten
arbeiteten -> arbeiten
arbeitetet -> arbeiten
gearbeitet -> arbeiten
arbeite -> arbeiten
...
Run Code Online (Sandbox Code Playgroud)
这些词典有几个缺点,包括巨大的尺寸和无法处理未知单词.
当然,所有异常只能用字典处理:
esse -> essen
isst -> essen
eßt -> essen
aß -> essen
aßt -> essen
aßen -> essen
...
Run Code Online (Sandbox Code Playgroud)
(我的思绪现在正在旋转:))
我有一个关于以下场景的问题.当我对图像进行后期处理时,我获得了一个轮廓,不幸的是两次连接,如您在底线所示.为了明确我想要的只是外线.因此我放大并标记了线条,我想要大图像.

我想从这个选择中得到的只是外面部分,我在下一张图片中标记为绿色.对不起我糟糕的绘画技巧.;)

我正在使用MatLab和IPT.所以我也尝试了解bwmorph和hbreak选项,但它引发了一个错误.
我该如何解决这个问题?如果你成功了,请告诉我一些关于它的事情吗?先感谢您!
诚挚
matlab octave morphological-analysis mathematical-morphology
我有一个以DOT文件形式保存的传感器.我可以使用gvedit看到图形的图形表示,但是如果我想将DOT文件转换为可执行的传感器,那么我可以测试传感器并查看它接受的字符串以及它不接受的字符串.
在我在Openfst,Graphviz及其Python扩展中看到的大多数工具中,DOT文件仅用于创建图形表示,但如果我想解析文件以获得交互式程序,我可以测试字符串换能器?
是否有任何库可以完成任务,或者我应该从头开始编写它?
正如我所说,DOT文件与我设计的模拟英语形态的换能器有关.这是一个巨大的文件,但只是为了让您了解它是什么样的,我提供了一个示例.假设我想创建一个能够模拟英语关于名词和多个方面行为的传感器.我的词典只包含三个单词(书,男孩,女孩).在这种情况下,我的传感器看起来像这样:

这是从这个DOT文件直接构造的:
digraph A {
rankdir = LR;
node [shape=circle,style=filled] 0
node [shape=circle,style=filled] 1
node [shape=circle,style=filled] 2
node [shape=circle,style=filled] 3
node [shape=circle,style=filled] 4
node [shape=circle,style=filled] 5
node [shape=circle,style=filled] 6
node [shape=circle,style=filled] 7
node [shape=circle,style=filled] 8
node [shape=circle,style=filled] 9
node [shape=doublecircle,style=filled] 10
0 -> 4 [label="g "];
0 -> 1 [label="b "];
1 -> 2 [label="o "];
2 -> 7 [label="y "];
2 -> 3 [label="o "];
3 -> 7 [label="k "];
4 -> 5 [label="i "];
5 …Run Code Online (Sandbox Code Playgroud) 骨架化的目的是表示具有最小像素集的二进制图像.骨架必须考虑表单的几何属性并保留关联关系.
我的问题是如何从二进制图像中获取骨架?
我无法实现灰度图像的正确分割:

基本的事实,即我希望细分看起来像是这样的:

我对圈内的三个组成部分最感兴趣.因此,正如您所看到的,我想将顶部图像分成三个部分:两个半圆,以及它们之间的矩形.
我尝试了各种扩张,侵蚀和重建的组合,以及各种聚类算法,包括k-means,isodata和高斯混合 - 所有这些都取得了不同程度的成功.
任何建议,将不胜感激.
编辑:这是我能够获得的最佳结果.这是使用活动轮廓来分割圆形ROI,然后应用等数据聚类获得的:

这有两个问题:
matlab image-processing morphological-analysis image-segmentation mathematical-morphology
我想计算给定的numpy数组结构的周长.周长是指numpy数组中结构的精确周长.该结构可包括孔.
我目前的方法是这样的:
import numpy
a = numpy.zeros((6,6), dtype=numpy.int)
a[1:5, 1:5] = 1;a[3,3] = 0
# Way 1
s = ndimage.generate_binary_structure(2,1)
c = ndimage.binary_dilation(a,s).astype(a.dtype)
b = c - a
numpy.sum(b) # The result, however the hole is calculated as 1, although there are 4 edges
# Way 2
b = ndimage.distance_transform_cdt(a == 0,metric='taxicab') == 1
b = b.astype(int)
numpy.sum(b) # same as above
Run Code Online (Sandbox Code Playgroud)

如您所见,它显示所有相邻单元格,但它们的总和不等于修补程序的周长.示例数组中的孔计算为1,尽管它正确地有4个边.类似的问题是不同形状的更大孔.
我过去曾问过类似的问题,但所有提供的解决方案最终都没有以正确的输出值解决.有人知道如何做到这一点?没有其他包装比numpy,scipy和基础包请.
我试图找到图像中最大的对象,并删除图像中小于它的任何其他对象.
这就是我所拥有的,但我无法让它发挥作用.
l=bwlabel(BW);
%the area of all objects in the image is calculated
stat = regionprops(l,'Area','PixelIdxList');
[maxValue,index] = max([stat.Area]);
%remove any connected areas smaller than the biggest object
BW2=bwareaopen(BW,[maxValue,index],8);
subplot(5, 5, 4);
imshow(BW2, []);
Run Code Online (Sandbox Code Playgroud)
我正在使用这些数字乳房X线照片.我试图从乳房区域除去图像中的所有对象.
我的问题很简单.这可能太简单了.但事情是在我的一个项目上工作时,我使用以下几行来扩展二进制图像.
cv::dilate(c_Proj, c_Proj, Mat(), Point(), 2);
Run Code Online (Sandbox Code Playgroud)
这基本上是用3x3矩形结构元素扩展二进制图像.从最后一个参数可以看出我正在执行此操作的2次迭代,这相当于:
cv::dilate(c_Proj, c_Proj, Mat(), Point(), 1);
cv::dilate(c_Proj, c_Proj, Mat(), Point(), 1);
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果我只使用6x6结构元素执行一次迭代,而不是执行两次迭代,这在准确性和性能方面是否等同于上述代码?因为图像只迭代一次,它会更快吗?
我试图获得一个英语单词的基本英语单词,该单词是从其基本形式修改的.这个问题已在这里提出,但我没有看到正确的答案,所以我试图这样说.我尝试了两个来自NLTK包的词干器和一个词形变换器,它们是搬运器,干扰器,雪球器和wordnet lemmatiser.
我试过这段代码:
from nltk.stem.porter import PorterStemmer
from nltk.stem.snowball import SnowballStemmer
from nltk.stem.wordnet import WordNetLemmatizer
words = ['arrival','conclusion','ate']
for word in words:
print "\n\nOriginal Word =>", word
print "porter stemmer=>", PorterStemmer().stem(word)
snowball_stemmer = SnowballStemmer("english")
print "snowball stemmer=>", snowball_stemmer.stem(word)
print "WordNet Lemmatizer=>", WordNetLemmatizer().lemmatize(word)
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
Original Word => arrival
porter stemmer=> arriv
snowball stemmer=> arriv
WordNet Lemmatizer=> arrival
Original Word => conclusion
porter stemmer=> conclus
snowball stemmer=> conclus
WordNet Lemmatizer=> conclusion
Original Word => ate
porter stemmer=> ate
snowball stemmer=> ate
WordNet …Run Code Online (Sandbox Code Playgroud)