Comments (2)
It depends. Your question is a bit underspecified. It depends how well-defined your rules actually are.
Try something like this.
final Terminal<String> uninterestingTerminal = new Terminal {
... implement what terminals are non-interesting ...
}
private static final Grammar grammar = new Grammar.Builder("myGrammar")
.addRule(
NotInteresting,
uninterestingTerminal,
)
.addRule(
NotInteresting,
NotInteresting,
uninterestingTerminal
)
.addRule(
RULE1,
terminal1,
terminal2
)
.addRule(
RULE2,
terminal3,
terminal4
)
.addRule(
S,
NotInteresting,
RULE1,
NotInteresting,
RULE2
)
.build();
Note that the added value of this library is the probabilistic part. If you don't need to do probabilistic parses, you probably better use some other context-free grammar or parser combinator.
from java-probabilistic-earley-parser.
Just a simple example: i want to match any DIGIT4
in a sentence.
NonTerminal S = Category.nonTerminal("S");
Terminal<String> ANY = new RegexTerminal(".*");
Terminal<String> DIGIT4 = new RegexTerminal("\\d{4}");
Grammar<String> grammar = new Grammar.Builder<String>("test").setSemiring(LogSemiring.get())
.addRule(1.0, S, ANY, DIGIT4, ANY)
.build();
Parser<String> parser = new Parser<>(grammar);
// works
parser.getViterbiParseWithScore(S, Tokens.tokenize("anything 1234 others"))
// NOT working
parser.getViterbiParseWithScore(S, Tokens.tokenize("anything 1234 others 4567 bla bla ..."))
How to write such grammar?
from java-probabilistic-earley-parser.
Related Issues (13)
- allow callbacks after predicting, scanning and completing
- Example of drawing a parse tree when using JPEP as a library? HOT 1
- left-recursive grammar breaks the parser HOT 5
- Writing cf-gammars without probabilities HOT 2
- Do not allow malformed grammars
- implement inside-outside algorithm for estimating rule probabilities
- investigate parallelization gains HOT 2
- ERROR CHECKING IMPLEMENTATION HOT 31
- Implement ε-rules (empty rules) HOT 2
- EXAMPLE PROJECT HOT 10
- Allow regular expressions to describe tokens in .cfg files HOT 1
- Error: "The method parse(Path, Charset) is undefined for the type Grammar" HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from java-probabilistic-earley-parser.