我正在尝试使用Apache Lucene进行标记,我对从一个获取令牌的过程感到困惑TokenStream.
最糟糕的是,我正在查看解决我的问题的JavaDocs中的注释.
不知何故,AttributeSource应该使用an 而不是Tokens.我完全不知所措.
任何人都可以解释如何从TokenStream获取类似令牌的信息吗?
在我的JavaEE应用程序中,我使用基于Atom的Google Sites API从非公开的Google站点检索内容.从本质上讲,我们将Google网站用作轻量级CMS,并且在应用程序中我使用API检索网站内容以提供我的在线帮助系统.我有一段时间没有这个设置,它的工作没有任何障碍.
在我的应用程序中,我需要为在线帮助系统添加全文搜索功能.我知道此功能请求会在某个时刻出现,因此在决定使用Google协作平台托管我的内容时,我检查了Sites API是否支持全文搜索.确实如此.例如,以下URL将在整个站点中搜索my-site包含该关键字的页面user.
https://sites.google.com/feeds/content/my.doma.in/my-site?q=user
Run Code Online (Sandbox Code Playgroud)
这有效,并给我预期的结果页面.但它只针对用西方语言编写的内容,或者更具体地说,用空格和标点符号分隔标记/单词的语言.当我在日语内容上运行类似的搜索时,搜索关键字????:
https://sites.google.com/feeds/content/my.doma.in/my-site?q=%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC
Run Code Online (Sandbox Code Playgroud)
我将只获得结果页面,其中搜索词显示为裸字符串,即由空格或标点符号分隔.由于日语是一种用脚本连续编写的语言,这还不够.包含的页面,例如:
自身ごのユーザー基本情报の确认
不会出现在结果中.因此,似乎在幕后使用的搜索索引是基于"西方"词汇规则创建的,并且日语内容未正确标记化.但是,当我从Google网站的" 搜索此网站"字段中搜索相同的关键字时,我确实得到了正确的结果.我得出结论,存在一个正确的标记化索引,但似乎不可能将它用于基于API的搜索.
为了解决这种情况,这些是我迄今为止探索过的途径:
"????").*????*).lang,hl(界面语言), rl(结果语言)..我在这里很快就没有想法了.在最糟糕的情况下,我最终将不得不自己检索,标记和索引所有内容,并使其可以通过这种方式进行搜索.由于这需要大量工作,我想知道是否有人遇到过同样的问题,并找到了可接受的解决方法或解决方案.
我还没有找到针对此问题的优雅解决方案,因此我在Google Apps API问题跟踪器上提出了一个缺陷:https://code.google.com/a/google.com/p/apps-api-issues/issues /细节?ID = 3780
在经过一些反复来回之后,谷歌的工程师们已经承认问题确实存在于所描述的范围内,并且已经"在内部提交了问题".缺陷票一直停留在被分流状态至今.如果您和我一样有兴趣看到此问题已解决,请花点时间在Google的问题跟踪器上加注星标/投票.
我想在空格上拆分管道的每一行,然后在自己的行上打印每个令牌.
我意识到我可以使用以下方法获得此结果:
(cat someFileInsteadOfAPipe).split(" ")
Run Code Online (Sandbox Code Playgroud)
但我想要更多的灵活性.我希望能够对每个令牌做任何事情.(我曾经在Unix 上使用AWK,而我正试图获得相同的功能.)
我目前有:
echo "Once upon a time there were three little pigs" | %{$data = $_.split(" "); Write-Output "$($data[0]) and whatever I want to output with it"}
Run Code Online (Sandbox Code Playgroud)
显然,它只打印第一个令牌.有没有办法让我在每个令牌上依次打印?
此外,%{$data = $_.split(" "); Write-Output "$($data[0])"}我从博客获得的部分,我真的不明白我在做什么或语法是如何工作的.
我想谷歌,但我不知道该怎么称呼它.请帮我一两句话给谷歌,或者链接向我解释这些%和所有$符号的作用,以及开始和结束括号的重要性.
我意识到我实际上无法使用(cat someFileInsteadOfAPipe).split(" "),因为文件(或更好的传入管道)包含多行.
关于一些答案:
如果Select-String在令牌化之前用于过滤输出,则需要记住Select-String命令的输出不是字符串的集合,而是MatchInfo对象的集合.要获取要拆分的字符串,需要访问对象的Line属性MatchInfo,如下所示:
cat someFile | Select-String "keywordFoo" | %{$_.Line.Split(" ")}
Run Code Online (Sandbox Code Playgroud) 我正在使用以下格式split()标记分隔的字符串*:
name*lastName*ID*school*age
%
name*lastName*ID*school*age
%
name*lastName*ID*school*age
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码从名为"entrada.al"的文件中读取此内容:
static void leer() {
try {
String ruta="entrada.al";
File myFile = new File (ruta);
FileReader fileReader = new FileReader(myFile);
BufferedReader reader = new BufferedReader(fileReader);
String line = null;
while ((line=reader.readLine())!=null){
if (!(line.equals("%"))){
String [] separado = line.split("*"); //SPLIT CALL
names.add(separado[0]);
lastNames.add(separado[1]);
ids.add(separado[2]);
ages.add(separado[3]);
}
}
reader.close();
}
Run Code Online (Sandbox Code Playgroud)
我得到了这个例外:
线程"main"中的异常java.util.regex.PatternSyntaxException:在索引0*附近悬挂元字符'*'
我的猜测是*原始文本文件中缺少一个年龄后导致了这种情况.我该如何解决这个问题?
我需要编写一个过程来规范化一个记录,该记录具有由一个char连接的多个标记.我需要获取这些标记分割字符串并将每个标记作为新记录插入表中.Oracle是否有类似"拆分"功能的东西?
我正在使用nltk,所以我想创建自己的自定义文本,就像nltk.books上的默认文本一样.但是,我刚刚接受了这样的方法
my_text = ['This', 'is', 'my', 'text']
Run Code Online (Sandbox Code Playgroud)
我想发现任何方式输入我的"文本":
my_text = "This is my text, this is a nice way to input text."
Run Code Online (Sandbox Code Playgroud)
哪种方法,python或者nltk允许我这样做.更重要的是,我怎么能低估标点符号呢?
我习惯了c风格getchar(),但似乎没有什么比得上java了.我正在构建一个词法分析器,我需要逐个读入输入字符.
我知道我可以使用扫描程序扫描令牌或行,并通过char-by-char解析令牌,但对于跨越多行的字符串来说,这似乎很笨重.有没有办法在Java中从输入缓冲区获取下一个字符,或者我应该只使用Scanner类插件?
输入是文件,而不是键盘.
有没有一种简单的方法可以使用Lucene的任何子类Analyzer来解析/标记化String?
就像是:
String to_be_parsed = "car window seven";
Analyzer analyzer = new StandardAnalyzer(...);
List<String> tokenized_string = analyzer.analyze(to_be_parsed);
Run Code Online (Sandbox Code Playgroud) 为了论证,我们假设一个HTML解析器.
我已经读过它首先将所有内容标记化,然后解析它.
tokenize意味着什么?
解析器是否每个都读取每个字符,构建一个多维数组来存储结构?
例如,它是读取a <然后开始捕获元素,然后一旦它遇到关闭>(在属性之外)它被推送到某个地方的数组堆栈?
我为了知道而感兴趣(我很好奇).
如果我要阅读像HTML Purifier这样的内容,那么这会让我对HTML的解析方式有所了解吗?
如何将逗号分隔的字符串转换为数组?
我有输入' 1,2,3',我需要将其转换为数组.