File tree Expand file tree Collapse file tree 4 files changed +52
-1
lines changed
Expand file tree Collapse file tree 4 files changed +52
-1
lines changed Original file line number Diff line number Diff line change @@ -53,6 +53,24 @@ module.exports = [
5353 }
5454 ]
5555 } ,
56+ {
57+ // du 4 septembre
58+ confidence : 0.5 ,
59+ Class : StreetNameClassification ,
60+ scheme : [
61+ {
62+ is : [ 'StopWordClassification' ]
63+ } ,
64+ {
65+ is : [ 'NumericClassification' ] ,
66+ not : [ 'PostcodeClassification' ]
67+ } ,
68+ {
69+ is : [ 'AlphaClassification' ] ,
70+ not : [ 'StreetClassification' , 'IntersectionClassification' , 'LocalityClassification' ]
71+ }
72+ ]
73+ } ,
5674 {
5775 // dos Fiéis de Deus
5876 confidence : 0.5 ,
Original file line number Diff line number Diff line change @@ -29,6 +29,7 @@ const TokenDistanceFilter = require('../solver/TokenDistanceFilter')
2929const MustNotPreceedFilter = require ( '../solver/MustNotPreceedFilter' )
3030const MustNotFollowFilter = require ( '../solver/MustNotFollowFilter' )
3131const SubsetFilter = require ( '../solver/SubsetFilter' )
32+ const FillSolver = require ( '../solver/FillSolver' )
3233
3334class AddressParser extends Parser {
3435 constructor ( options ) {
@@ -108,7 +109,8 @@ class AddressParser extends Parser {
108109 new MustNotFollowFilter ( 'LocalityClassification' , 'RegionClassification' ) ,
109110 new MustNotFollowFilter ( 'LocalityClassification' , 'CountryClassification' ) ,
110111 new TokenDistanceFilter ( ) ,
111- new SubsetFilter ( )
112+ new SubsetFilter ( ) ,
113+ new FillSolver ( )
112114 ] ,
113115 options
114116 )
Original file line number Diff line number Diff line change 1+ class FillSolver {
2+ solve ( tokenizer ) {
3+ tokenizer . solution . forEach ( solution => {
4+ // Get streets from this solution
5+ const streets = solution . pair . filter ( p => p . classification . constructor . name === 'StreetClassification' )
6+ // Get all nodes that are not in the solution
7+ const missings = tokenizer . section [ 0 ] . graph . edges . child . filter ( c => ! solution . pair . some ( p => p . span . intersects ( c ) ) )
8+
9+ missings . forEach ( missing => {
10+ const street = streets . find ( s => s . span . end === missing . start - 1 )
11+ const prefix = street && street . span . graph . findOne ( 'child:first' )
12+ if ( prefix && prefix . classifications . StreetPrefixClassification ) {
13+ street . span . setBody ( `${ street . span . body } ${ missing . body } ` )
14+ street . span . graph . add ( 'child' , missing )
15+ street . span . graph . remove ( 'child:last' , street . span . graph . findOne ( 'child:last' ) )
16+ street . span . graph . add ( 'child:last' , missing )
17+ }
18+ } )
19+ } )
20+ }
21+ }
22+
23+ module . exports = FillSolver
Original file line number Diff line number Diff line change @@ -116,6 +116,14 @@ const testcase = (test, common) => {
116116 assert ( `Rue de l'Adjudant Réau Paris` , [
117117 { street : `Rue de l'Adjudant Réau` } , { locality : 'Paris' }
118118 ] )
119+
120+ assert ( '16 Rue Des Petits Carreaux' , [
121+ { housenumber : '16' } , { street : 'Rue Des Petits Carreaux' }
122+ ] )
123+
124+ assert ( '16 Rue Des Petits Carreaux Paris' , [
125+ { housenumber : '16' } , { street : 'Rue Des Petits Carreaux' } , { locality : 'Paris' }
126+ ] )
119127}
120128
121129module . exports . all = ( tape , common ) => {
You can’t perform that action at this time.
0 commit comments