我正在使用 Spacy 从句子中提取名词。这些句子在语法上很差,也可能包含一些拼写错误。
这是我正在使用的代码:
代码
import spacy
import re
nlp = spacy.load("en_core_web_sm")
sentence= "HANDBRAKE - slow and fast (SFX)"
string= sentence.lower()
cleanString = re.sub('\W+',' ', string )
cleanString=cleanString.replace("_", " ")
doc= nlp(cleanString)
for token in doc:
if token.pos_=="NOUN":
print (token.text)
Run Code Online (Sandbox Code Playgroud)
输出:
sfx
Run Code Online (Sandbox Code Playgroud)
同样对于句子“fast foward2”,我得到 Spacy 名词为
foward2
Run Code Online (Sandbox Code Playgroud)
这表明这些名词有一些无意义的词,如:sfx、foward2、ms、64x、bit、pwm、r、brailledisplayfastmovement等。
我只想保留包含合理的单词名词的短语,如 broom、ticker、pool、highway 等。
我尝试过 Wordnet 过滤 wordnet 和 spacy 之间的常用名词,但它有点严格,并且还过滤了一些合理的名词。例如,它过滤了摩托车、whoosh、手推车、金属、手提箱、拉链等名词
因此,我正在寻找一种解决方案,在该解决方案中,我可以从我获得的 spacy 名词列表中过滤掉最合理的名词。
我正在用Java实现A*算法,以找到两点(不同城市的机场)之间的最短路径.为此目的,我使用无向和加权图,其中每条边代表两个节点(机场)之间的距离.启发式计算通过欧几里德距离完成.这是我的启发式函数的代码
double Sum = 0;
Sum = Math.pow((destination.getG()-currentNode.getG()),2.0);
return Math.sqrt(Sum);
Run Code Online (Sandbox Code Playgroud)
我用G值i计算启发式,即节点之间的边缘.这是对的吗?请帮助.启发式函数获取源节点和目标节点.我希望它清楚.