Skip to content
Snippets Groups Projects
Select Git revision
  • a6995085d110533fbdcc036f98a72f38040e666d
  • master default protected
  • vertical_relations
  • lu_without_semantic_frames
  • hierarchy
  • additional-unification-filters
  • v0.1.1
  • v0.1.0
  • v0.0.9
  • v0.0.8
  • v0.0.7
  • v0.0.6
  • v0.0.5
  • v0.0.4
  • v0.0.3
  • v0.0.2
  • v0.0.1
17 results

reset_db.sh

Blame
  • weakagreement.h 2.27 KiB
    #ifndef LIBWCCL_OPS_FUNCTIONS_BOOL_PREDICATE_WEAKAGREEMENT_H
    #define LIBWCCL_OPS_FUNCTIONS_BOOL_PREDICATE_WEAKAGREEMENT_H
    
    #include <libwccl/ops/functions/bool/predicate.h>
    #include <libwccl/values/position.h>
    
    namespace Wccl {
    
    /**
     * Predicate checking weak agreement on a range of tokens.
     */
    class WeakAgreement : public Predicate
    {
    public:
    	typedef boost::shared_ptr<Function<Position> > PosFunctionPtr;
    	typedef boost::shared_ptr<Function<TSet> > TSetFunctionPtr;
    
    	WeakAgreement(
    		const PosFunctionPtr& left_pos_expr,
    		const PosFunctionPtr& right_pos_expr,
    		const TSetFunctionPtr& attribs_expr,
    		const Corpus2::Tagset& tagset)
    		: left_pos_expr_(left_pos_expr),
    		  right_pos_expr_(right_pos_expr),
    		  attribs_expr_(attribs_expr),
    		  tagset_(tagset)
    	{
    		BOOST_ASSERT(left_pos_expr_);
    		BOOST_ASSERT(right_pos_expr_);
    		BOOST_ASSERT(attribs_expr);
    	}
    
    	/**
    	 * @returns Name of the function: "wagr"
    	 */
    	std::string raw_name() const {
    		return "wagr";
    	}
    
    	/**
    	 * @returns String reperesentation of the predicate in form of
    	 * "wagr(pos1_expr, pos2_expr, attrib_expr)"
    	 */
    	std::string to_string(const Corpus2::Tagset& tagset) const;
    
    protected:
    	const PosFunctionPtr left_pos_expr_;
    	const PosFunctionPtr right_pos_expr_;
    	const TSetFunctionPtr attribs_expr_;
    	const Corpus2::Tagset& tagset_;
    
    	/**
    	 * Gets start and end positions for range from arguments.
    	 * Range is trimmed to sentence boundaries.
    	 * If either of the positions is Nowhere, or range is empty, False
    	 * is returned.
    	 * Otherwise, weak agreement for given attributes is checked
    	 * on the specified range of tokens and result of this test is returned.
    	 * @returns True if the tokens in specified range are in weak
    	 * agreement for specified attributes. False otherwise, including
    	 * cases of empty range or either of the positions being Nowhere.
    	 */
    	BaseRetValPtr apply_internal(const FunExecContext& context) const;
    
    	/**
    	 * Writes raw string reperesentation of the predicate in form of
    	 * "wagr(pos1_raw_expr, pos2_raw_expr, attribs_raw_expr)"
    	 * @note This version doesn't require a Tagset, but will
    	 * be incomplete and/or contain internal info.
    	 * @returns Stream written to.
    	 */
    	std::ostream& write_to(std::ostream& ostream) const;
    
    };
    
    } /* end ns Wccl */
    
    #endif // LIBWCCL_OPS_FUNCTIONS_BOOL_PREDICATE_WEAKAGREEMENT_H